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

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

▶ ゼニマックス メディア インク.の特許一覧

特許7050836プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法
<>
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図1
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図2
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図3
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図4
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図5
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図6
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図7
  • 特許-プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-31
(45)【発行日】2022-04-08
(54)【発明の名称】プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法
(51)【国際特許分類】
   H04N 19/146 20140101AFI20220401BHJP
   H04N 19/179 20140101ALI20220401BHJP
   H04N 19/192 20140101ALI20220401BHJP
【FI】
H04N19/146
H04N19/179
H04N19/192
【請求項の数】 9
(21)【出願番号】P 2020033260
(22)【出願日】2020-02-28
(62)【分割の表示】P 2020507501の分割
【原出願日】2018-04-20
(65)【公開番号】P2020110608
(43)【公開日】2020-07-27
【審査請求日】2020-10-26
(31)【優先権主張番号】62/488,526
(32)【優先日】2017-04-21
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/647,180
(32)【優先日】2018-03-23
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/655,901
(32)【優先日】2018-04-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519376166
【氏名又は名称】ゼニマックス メディア インク.
【氏名又は名称原語表記】ZENIMAX MEDIA INC.
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】コピエッツ,ミヒャエル
【審査官】岩井 健二
(56)【参考文献】
【文献】特開2016-027697(JP,A)
【文献】国際公開第2015/157135(WO,A2)
【文献】国際公開第2010/111092(WO,A1)
【文献】米国特許出願公開第2013/0208785(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ンピュータで実現される方法であって、
ーム環境における1つ以上の通しプレイ(playthrough)を記録する段階
前記1つ以上の通しプレイからの複数のフレーム(frame)をヒートマップ(heatmap)上の複数のセル(cell)に分類する段階であって、前記分類する段階は、前記ヒートマップと関連する分類されたフレームのリストを結果として生む、段階と
レンダラ(renderer)において、前記分類されたフレームのリストを収集する段階
前記ヒートマップの各セルに対する平均エンコードフレームサイズ(average encoded frame size)を計算するために、前記分類されたフレームのリストから1つ以上のフレームをエンコードする段階であって、各平均エンコードフレームサイズは、セルあたり(per-cell)の正規化されたエンコーダ品質設定と関連する、段階と、
各セルの前記平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する段階
を含み、
ゲームプレイ(gameplay)におけるビデオストリーミングの間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定はエンコーダにヒント(hint)を与えるために使用される、
方法。
【請求項2】
前記1つ以上のフレームは、
シングルパス(single pass)によってデオシーケンスにコーディングされる、請求項1に記載の方法。
【請求項3】
前記1つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置(player location)で構成される、請求項1に記載の方法。
【請求項4】
前記セルあたりの正規化されたエンコーダ品質設定は、
下記の数式
【数1】
によって算される、請求項1に記載の方法。
【請求項5】
ンダラであって、前記レンダラは、
ゲーム環境における1つ以上の通しプレイを記録し、
前記1つ以上の通しプレイからの複数のフレームをヒートマップ上の複数のセルに分類し前記分類することは、前記ヒートマップと関連する分類されたフレームのリストを結果として生
前記分類されたフレームのリストを収集し、
各セルの平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する
レンダラと
エンコーダであって、
記エンコーダは前記ヒートマップの各セルに対する平均エンコードフレームサイズを計算するために、前記分類されたフレームのリストから1つ以上のフレームをエンコードし、各平均エンコードフレームサイズは、セルあたりの正規化されたエンコーダ品質設定と関連する
エンコーダと
を含み、
ゲームプレイにおけるビデオストリーミングの間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は前記エンコーダにヒントを与えるために使用される、
システム。
【請求項6】
前記1つ以上のフレームは、
シングルパスによってデオシーケンスにコーディングされる、請求項5に記載のシステム。
【請求項7】
前記1つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置で構成される、請求項5に記載の方法。
【請求項8】
前記セルあたりの正規化されたエンコーダ品質設定は、
以下の数式
【数2】
によって計算される、請求項5に記載のシステム。
【請求項9】
前記セルあたりの正規化されたエンコーダ品質設定は、
空間関連シーケンスおよび時間関連シーケンスから結合される、請求項5に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2017年4月21日に出願された米国仮出願第62/488,526号、2018年3月23日に出願された米国仮出願62/647,180、および2018年4月11日に出願された米国仮出願第62/655,901号の利益を主張する。
【背景技術】
【0002】
サーバ側のゲームがクライアント側のプレイヤによって制御されるリモートゲーミングアプリケーションは、既存のまたはカスタマイズされたエンコーダを使用し、リアルタイムで3Dグラフィックスエンジン(graphics engine)からのビデオ出力をエンコードすることを試みていた。しかし、ビデオゲームの会話形式の特性、特に、ビデオ出力とプレイヤ入力との間のプレイヤフィードバックループ(player feedback loop)は、ゲームビデオストリーミングの待機時間(latency)が一般的なビデオストリーミングよりも極めて長い。既存のビデオコーディング方法は、エンコード時間を減らすために計算能力(computational power)を交換することができるが、その他の方法はない。エンコードプロセスをビデオレンダリングプロセスに統合するための新たな方法は、エンコード時間を著しく減らすことができる上に、計算能力を低め、エンコードされたビデオの品質を改善し、既存のハードウェアデバイスの相互運用性を維持するためにオリジナルビットストリームデータ形式(original bitstream data format)を維持するようになる。
【0003】
マルチパス(multi-pass)エンコードプロセスの1番目のパス(pass)において、データが連続的なパスに対するビットレート(bitrate)の制約条件(constraint)に符合するように効率的にパッキングされる前に、エンコードの費用(cost)またはそれぞれのエンコードされたビデオフレームのサイズが計算される。マルチパスエンコードの利点は相当高く、ビットレートの制約条件に対して可能な限り最上の品質を提供するが、既存のマルチパスエンコードは完全なビデオファイルへのアクセス(access)を要求することから、ライブストリーミング(live streaming)アプリケーションには適さない。
【0004】
一般的に、ライブストリーミングアプリケーションは、ビデオを予め使用することができないため、シングルパス(single-pass)エンコードを利用する。ライブストリームエンコードに対する時間制約条件は、制限されたビットレートにより、ビデオ情報を効率的にパッキングするためのエンコーダの機能を妨害する。エンコードの費用は、シングルパスエンコードとして計算されないため、高エントロピ(high-entropy)フレームがエンコードされるときにはネットワークトラフィック(network traffic)が急増する。
【0005】
リアルタイムレンダリングされたビデオは、ビデオゲームストリーミングのようなライブストリーミングアプリケーションで多く利用されているが、ここで、高品質および制限された帯域幅は両方とも価値が高い。レンダリングされたビデオは、記録されたビデオとは異なり、フレームをエンコードする費用を推定するのに再使用することのできる各フレームの追加情報へのアクセスを有する。このような方式により、マルチパスエンコード方式における1番目のパスの結果は、ビットレートの制約条件内で最高品質のエンコードされたビデオの取得に近づくことができる。多くのレンダリングエンジンは、レンダリングされるイメージに対する部分的な情報を有し、ランタイム中に使用することのできるエンコーダ品質設定(encoder quality setting)を事前に生成することができる。このような方式により、マルチパスエンコードモードの利点がライブストリーミング環境で達成されるようにすることができる。しかし、後述するように、現在のコンピュータ技術では、増加したエントロピによるトラフィックスパイク(spike)を保障しながら、高い品質のリアルタイムレンダリングされたビデオのレンダリングを実行するのに十分なエンコード品質を推定するには依然として不足である。さらに、現在は、時間的ではなく空間的にプレエンコードし、リアルタイム環境に残っている状態でマルチパスエンコードを複製するエンコード技術は存在しない。
【0006】
米国特許第7,844,002 B2号(「‘002特許」)は、一定のビットレートを得るために情報ルックアヘッド(look-ahead)を利用してリアルタイムMPEGビデオコーディングを誘発するシステムおよび方法を開示している。システムは、2つのビデオエンコーダで構成され、エンコーダのうちの1つは、他のエンコーダのルックアヘッドウィンドウよりも一定の時間だけ入力を遅延させる。‘002特許のシステムにおいて、ビデオエンコーダのうち1つがバッファ(ルックアヘッド)デバイスとして動作して入力されるビデオフレームを遅延させ、情報コレクタ(collector)/プロセッサ(processor)としての役割を担うビデオエンコーダのうちの2つ目は、関連情報を抽出し、ビデオフレームに対するエンコード戦略を決めるためにかかる時間を有するであろう。その戦略が決まれば、コーディングパラメータは、実行のためにエンコーダデバイスに伝達される。‘002特許の技術には、少なくとも、ライブストリーミングアプリケーションでレンダリングされたビデオのエンコードフレームの費用を計算し、ゲーミング(gaming)アプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビットレートの制約条件内でエンコードされたビデオを最大化するためにビデオデータを使用する技術を提供するための事項は開示されていないため、本発明と比べて不足であると言える。本発明は、無制限に再使用することのできるビデオデータに対するエンコーダ設定を収集して格納するため、優れていると言える。
【0007】
米国公開特許第US2016/0198166 A1号(「‘166公報」)は、リアルタイムエンコードのためのソリューションを提供する疑似(pseudo)マルチパスエンコード技術のためのシステムおよび方法を開示している。開示されたシステムは、入力されるビデオフレームがピクチャ(picture)のサブグループ(sub-group)を形成するように、1番目のパスでダウンサンプリングされてエンコードされるシステムである。この後、このようなサブグループは、2番目にパスコーディングされたフレームのセットを生成するために使用されるエンコード統計(encoding statistic)の生成に使用される。‘166公報に記載された技術には、少なくとも、本発明がライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードするための特定の費用を計算し、このようなデータをいかなるサンプリングがなくとも、ビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術が記載されているため、本発明よりも不足であると言える。
【0008】
米国特許第9,697,280号(「‘280特許」)は、正規化された情報からモバイルメディアデータ記録を生成し、セツルメント配置(settlement arrangement)を決定するためにモバイルメディアデータを分析し、セツルメント配置からの関連情報をモバイルメディア記録に代表された参加者(participant)のうちの少なくとも一部に提供するためのシステムおよび方法を開示している。このシステムおよび方法は、以前エンコーダの出力が次のエンコーダの入力にデージチェーン方式で連結されてエンコードされたファイルが消費する前に遅延を発生させる、マルチパスエンコードを実行する。同等に高い品質を達成しながら、順次的なエンコードと関連する待機時間を減少させるために、第1エンコーダが第2エンコーダの入力として供給されるように連続的なエンコードステージ(stage)がパイプラインで構成され、これにより、各エンコーダでのエンコードが少ない時間だけオフセットされ、大部分のエンコードを並列で行うようにする。さらに、すべての待機時間は、読み取られた1番目のブロックから記録された1番目のブロックまでの各エンコーダの待機時間の合計に近似する。すべての待機時間は、リアルタイムマルチパスエンコードをより容易にすることができる。しかし、このセクションに記載された他の技術と同じように、‘280特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、このようなデータビットレート制約条件内でエンコードされたビデオを最大化するのに使用するための技術は開示されていない。
【0009】
米国公開特許公開第US20170155910 A1号(「‘910公報」)は、境界アーティファクト(boundary artifact)を導入せずに、メディアコンテンツのオーディオを別途のコンテンツファイルに分割するためのシステムおよび方法を開示している。‘910公報は、エンコーダがオリジナルコンテンツファイルをソースストリームレット(streamlet)に分割し、例えば、TVプログラムが終わるのを待たずに、該当の各ロー(raw)ストリームレットに対する複数のコピー(例えば、ストリーム)の2パスエンコードを実行するシステムを開示している。このように、ウェブサーバは、ストリームレット生成システムがオリジナルコンテンツファイルのキャプチャ(capture)を開始した直後に、インターネットを介してストリームレットをストリーミングすることができる。パブリッシャ(publisher)から送信されたライブブロードキャスト(live broadcast)とコンテンツの可用(availability)の間の遅延は、ホストのコンピューティング性能によって異なる。しかし、‘910公報には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【0010】
米国特許第9,774,848号(「‘848特許」)は、ディスプレイデバイスにおけるビデオプレゼンテーション(video presentation)の効率および品質の両方を改善するために、MPEG標準のビデオエンコーダコンポーネント(component)を向上させるためのシステムおよび方法を開示している。開示された技術には、ルックアヘッドプロセッシングを経て適応的ビートを割り当てることによってビデオ圧縮を実行することが記載されている。MPEGビデオ圧縮において、与えられた個数のビデオフレーム(15、30、60など)は、ピクチャのグループ(Group-of-Pictures:GoP)を形成するためにともにグループ化される。GoP内のピクチャは、I、P、またはBピクチャ(フレーム)にコーディングされる。各GoPに割り当てられたビートの数は、これに含まれたフレームの数に比例するように構成される。システムは、適応的ビート割り当てを可能にする統計を収集するために、リアルタイムルックアヘッドを実行する。さらに、変形された3Dパイプラインシェーダペイロード(3D pipeline shader payload)は、ドメインシェーダ(domain shader)の場合は複数のパッチ(patch)を処理し、ジオメトリシェーダ(geometry shader)の場合はプリミティブオブジェクトインスタンスカウント(primitive object instance count)が1よりも大きいときに複数のプリミティブを処理し、ピクセルシェーダ(pixel shader)の場合は複数のトライアングル(triangle)を処理する。モーション推定エンジンは、ビデオデータ内のモーションの方向や大きさに敏感であるか適応的な機能をデコードして処理するのにビデオを支援するように、グラフィックスプロセッサコンポーネントによって使用される。しかし、‘848特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをデコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。また、‘848特許は、最善のアシスト(assist)として作用し、本発明に開示されるような空間方式によるプレコーディングは実行していない。このように、本発明と同一のリアルタイム方式として有利なマルチパスエンコードは、複製されることができない。
【0011】
米国特許第9,749,642号(「‘642特許」)は、ビデオエンコーダが1つ以上の分数サンプル[モーションベクトル(motion vector)]MV精密度(precision)と定数サンプルMV精密度を含む複数のMV精密度の間で、ビデオのユニット(unit)に対するMV精密度を決定するシステムおよび方法を開示している。ビデオエンコーダは、分数サンプルMV精密度を有するMV値のセットを識別した後、0の少数部分を有するMV値(セット内)の普及率(prevalence)に少なくとも部分的に基づいてユニットに対するMV精密度を選択することができる。また、ビデオエンコーダは、レート歪み関数(rate-distortion analysis)を実行することができるが、ここで、レート歪み関数は、定数サンプルMV精密度に向かってバイアスされる(biased)。しかし、‘642特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【0012】
ヨーロッパ特許第EP1820281 B1号(「‘281特許」)は、デュアルパス(dual-pass)エンコードのためのシステムおよび方法を開示している。開示される方法は、(a)ピクチャを受信する段階、(b)第1時間にコーディングされたピクチャバッファの第1充満度(degree of fullness)を計算する段階、(c)第2時間にコーディングされたピクチャバッファの第2充満度をリターンするように、第1充満度で動作する段階、(d)一定の時間内のピクチャを格納する段階、(e)該当の時間内に、ピクチャの第1複雑度を測定する段階、(f)ピクチャに対する好ましいターゲットサイズをリターンするように、ピクチャの第1複雑度および第2充満度で動作する段階、および(g)段階(d)に続き、マルチプロセッサビデオエンコーダにピクチャおよび好ましいターゲットサイズを提供する段階を含み、第1時間は、コーディングされたピクチャバッファの正確な充満度を計算することのできる最近の時間に該当し、第2時間は第1時間後に発生する。しかし、‘281特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【0013】
日本特許第JP06121518 B2号(「‘518特許」)は、オリジナルビデオストリームの選択された空間部分を独立型(stand-alone)ビデオストリームとしてエンコードするためのシステムおよび方法を開示しており、その方法は、選択された空間部分と関連するピクチャエレメント情報を取得する段階、選択された空間部分の周辺にある前記オリジナルビデオストリームの相補的(complementary)空間部分から導き出されたエンコードヒントを取得する段階、およびエンコードヒントを使用して選択された空間部分をエンコードする段階を含む。しかし、‘518特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【0014】
米国公開特許第2006/0230428号(「‘428公報」)は、複数のプレイヤが同時に参加することを許容するネットワークテレビゲームシステムに関するシステムおよび方法を開示している。‘428公報は、圧縮可能であって、ゲームに対するビデオフレームのサブセクションに対応するプレエンコードされたブロックを格納することのできるサーバを開示している。また、システムは、ゲーム内でユーザアクションに応答し、プレエンコードされたブロックを使用してゲームコンテンツを生成することができる。その後、このコンテンツは、ユーザに送信されることができる。言い換えれば、このような技術は、本発明に開示されるように、空間方式によってプレコーディングを実行せず、有利なマルチパスエンコードをリアルタイムで複製することができない。また、‘428公報の技術とは異なり、本発明は、システムがランタイム中に時間的シーケンス(例えば、解像度)によってフレームのすべての部分に対するパラメータを変更し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供することができる。
【0015】
米国特許第8,154,553号(「‘553特許」)は、命令をレンダリングするための遮断メカニズム、およびレンダリングエンジンの命令の処理、プレフィルタリングモジュールおよびビジュアルエンコーダを基盤とするフィードフォワードコントロールメカニズムを有するストリーミングゲームサーバに関するシステムおよび方法を開示している。‘553特許技術は、グラフィックスAPIを、視覚的複雑性とシーン(scene)においてオブジェクトのモーションを参照して一連のオブジェクトレベルデータを抽出するのに使用する。この情報は、GPUレベルにおけるレンダリング詳細事項、ビデオプレデコーダにおけるフィルタリングレベル、およびビデオエンコーダにおける量子化レベルを制御するのに使用される。また、システムは、ビデオエンコーダのターゲットエンコードされたフレーム内の各メクロブロックに対するモーション補償推定値を計算する。本明細書に記載された他の技術と同じように、‘553特許に開示されるシステムは、本発明に開示されるように、時間または空間方式によってプレコーディングを実行せず、実際にビットレートピークに応答してフレームをドロップ(drop)させるため、有利なマルチパスエンコードをリアルタイムで複製することができない。さらに、‘428公報の技術とは異なり、本発明は、システムがゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供することができる。
【0016】
このような技術における最新技術に関する説明によって明らであるが、リアルタイムゲーム環境のエンコードと関連する現在のコンピュータ技術に対する改善が、本技術分野において求められている。
【発明の概要】
【発明が解決しようとする課題】
【0017】
したがって、本発明の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステムおよび方法を開示することにある。一実施形態において、サーバは、フレームエンコードにおける変更と関連する情報をモニタリングし、公差境界(tolerance boundary)、ローリング(rolling)平均フレーム時間、およびフレーム時間の短期トレンド(short-termtrend)を計算し、これらの計算値をフレーム時間ピークの識別に使用する。さらに、サーバは、フレーム時間ピークのサイズに比例してフレーム出力の品質設定を変調するようにエンコーダにヒントを与える。
【0018】
また、本発明の他の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステムおよび方法を開示することにあって、公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの計算値は、高エントロピ(high-entropy)フレームの識別に使用される。
【0019】
また、本発明の他の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステム方法を開示することにあって、サーバは、公差境界外側のフレーム時間に対する品質スケーリング値(quality scaling value)を計算し、この計算値をフレーム時間ピークの識別に使用する。
【0020】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、レンダラ(renderer)は、ゲーム環境における1つ以上の通しプレイ(playthrough)を記録し、1つ以上の通しプレイからの複数のフレーム(frame)をヒートマップ(heatmap)上の複数のセル(cell)に分類し、分類されたフレームのリストを収集する。また、エンコーダは、ヒートマップの各セルに対する平均エンコードフレームサイズ(average encoded frame)を計算するために、分類されたフレームのリストから1つ以上のフレームをエンコードし、各平均エンコードフレームサイズをセルあたりの正規化されたエンコーダ品質設定と関連させてよい。また、エンコーダは、各セルの平均エンコードフレームサイズからヒートマップに対する平均フレームサイズを計算し、これらを、ビデオシーケンスをコーディングするためのヒントとしてゲームプレイ(gameplay)中に使用する。
【0021】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、レンダラは、複数のフレームで構成されるビデオシーケンスを記録し、エンコーダは、ビデオシーケンスの1番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによってビデオシーケンスをコーディングする。また、エンコーダは、エンコーダ品質設定を記録してよい。また、レンダラは、エンコーダ品質設定をビデオシーケンスの1番目のフレームによって正規化し、これらを、再生中にビデオシーケンスをコーディングするようにエンコーダにヒンドを与えるために使用してよい。
【0022】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、1つ以上のフレームがシングルパスによってエンコードされる。
【0023】
さらに、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、1つ以上の通しプレイから抽出されたデータは、複数のフレームおよびフレームそれぞれと連関するプレイヤ位置(player location)を含む。
【0024】
添付の図面は、後述する詳細な説明を参照することでより適切に理解することができるため、本発明の完全な理解およびこれによる多くの利点を容易に得ることができるであろう。
【図面の簡単な説明】
【0025】
図1】リアルタイムレンダリングされたビデオがリモートビューア(viewer)でライブストリーミングされる環境を示した例示図である。
図2】ロード推定基盤のエンコーダヒンティング段階を概略的に示したフローチャートである。
図3】フレーム時間ピークとフレーム時間バレー(valley)を検出した後、これに応じてエンコーダ設定を変更することを示した例示図である。
図4】ライブレンダラのランタイム中に事前に生成されたエンコーダ品質設定を使用することを概略的に示したフローチャートである。
図5】本発明の一実施形態における、ライブレンダリングされたシーケンスに対するエンコーダ品質設定を事前に生成する段階を概略的に示したフローチャートである。
図6】本発明の一実施形態における、決定された長さのエンジン内(in-engine)のリアルタイムカットシーン(cutscene)に対するエンコーダ品質設定の事前生成中に生成されるデータを示した例示図である。
図7】本発明の実施形態における、空間関連シーケンスに対するエンコーダ品質設定を事前生成することを示した例示図である。
図8】本発明の実施形態における、正規化されたエンコーダ品質設定が抽出されるヒートマップを示した例示図である。
【発明を実施するための形態】
【0026】
図面に示す発明の好ましい実施形態を説明するにあたり、明確化のために、特定の用語に依存することがある。しかし、本発明は、このように選択された特定の用語に限定されることを意図しておらず、それぞれの特定の用語は、類似の目的を達成するために類似の方式で作動するすべての技術的等価物を含むものと理解されなければならない。本発明の好ましい実施形態は、例示の目的として記載されているが、本発明は、図面に具体的に示されていない他の形態によっても実現可能であることが理解されなければならない。
【0027】
1秒あたり60フレームで実行されるライブストリーミングビデオゲームの一般的な動作の間、エンコーダは、モーションベクトルと残差を計算する。ビデオフレームが新たなビデオ情報によって以前のフレームとは大きく異なるとき、エンコーダによって計算された残差は正常よりも大きくなるはずであり、ネットワーク帯域幅使用量の急増(spike)を引き起こす原因となる。エンコーダは、このようなビットレートスパイク(spike)のようなファクタ(factor)に応答してライブストリーミング中にエンコーダ設定を適応させるようになるが、その設定は反応的に調節されるだけである。
【0028】
ビデオフレームがリアルタイムにレンダリングされる場合に、エンコーダは、ビットレート制約条件に対して可能な限り最高の品質を維持しようとするために、エンコード設定を優先的に適応させることに留意する。選択されたエンコーダ設定を無視するための設定を提供するプロセスは、ヒンティング(hinting)と呼ばれる。レンダラは、エンコードされる前のフレームに関する情報を有しているため、適切なエンコーダ設定の選択に適しており、したがってエンコーダにヒントを与えなければならない。入ってきたフレームが高いエントロピイメージであるとき、入ってくるフレームが以前のフレームと関連がないとき、または大きな残差、品質低下、またはビットレートスパイクを引き起こし得るという他の理由により、レンダラはエンコーダにヒントを与えるようになる。
【0029】
図1は、リアルタイムレンダリングされたビデオがリモートビューアでライブストリーミングされる環境を示した例示図である。サーバ100は、リアルタイムレンダリングプロセス102(本明細書では「レンダラ」とも呼ばれる)およびストリーミングコーデック104(本文書では「エンコーダ」とも呼ばれる)を同時に実行することのできるハードウェアで構成されてよい。サーバ100は、後述するように、遠隔測定法(telemetry)を実行する1つ以上の遠隔測定サーバ105を含む1つ以上のハードウェアデバイスで構成されてよい。サーバ100と遠隔測定サーバ105は、レンダリングプロセス102とコーデック104に対してローカルまたは遠隔であってよい。また、コーデック104は、直接的なレポーティングまたは本技術分野に周知の他のモニタリングプロセスを経ることで、レンダリングプロセス102にエンコーダ品質設定を再通信しなければならない。エンコードされたビデオストリームは、クライアント106デバイスにネットワークを介して送信される。クライアント106は、ビデオストリームをデコードしてディスプレイすることのできるハードウェアで構成されてよい。
【0030】
図2は、ロード推定基盤のエンコーダヒンティングの段階を概略的に示したフローチャートである。「イベントモニタリング」段階200で、レンダラがビデオを生成する間、レンダリングプロセスまたは他のサーバ側のプロセスは、フレームがエンコードされるのに必要な方法を変更する情報をモニタリングしなければならない。これには、該当のフレーム内でレンダラに対してなされたドローコール(draw call)の数、フレーム内で第1時間に現れるピクセルの数を基盤とするエンコードされた残差のサイズ計算を試みるための情報、またはレンダリング性能をエンコーダ性能と連関させるために試みる他の複数の情報が含まれてよい。モニタリングされた情報は、ランタイムレンダリングプロセス中に発生する、いずれかのメッセージ、計算結果、成果(outcome)、または個別に測定可能な値を含んでよい。エンコードされたフレームサイズが以前のフレームのエンコードされたフレームサイズと大きく異なることを示すことにより、情報が読み取られるときには、このような情報はイベントと呼ばれる。
【0031】
イベントは、図3を参照しながら説明するように、レンダラで始まってよく、レンダリングプロセスにおいて、ピーク検出モニタリングの一例としては、非正常的に(unusually)長いか非正常的に短いフレーム時間を検出するために各フレームのレンダリング時間をモニタリングする。このような場合、非正常的なフレームレンダリング時間は、イベントと見なされる。
【0032】
「現在フレームに対するエンコーダ品質設定の準備」段階202で、レンダラがイベントを受信するとき、エンコーダにヒントを与えるための目的として、レンダラで求められる複数の追加の計算があってよい。このような計算は、以前の段階のイベントモニタリング中に測定された情報を修正することを含んでよい。また、「それぞれのエンコードされたフレームに対するエンコーダ設定のレポーティング」段階204において、このような計算は、各フレームでエンコーダによってレンダラにレポーティングされるランタイムエンコーダ品質設定を修正することを含んでよく、必要によっては利用可能でなければならない。「準備されたエンコーダ設定によってエンコーダにヒンティング」段階206で、生成されたエンコーダ品質設定がレンダラからエンコーダに送信される。レンダラは、以後のフレームに対するイベントなどをモニタリングし続けるであろう。
【0033】
図3において、フレームでレンダリングに非正常的に長い時間がかかれば、レンダラは、このフレーム時間ピークのサイズに比例して品質設定を減少させるようにエンコーダにヒントを与えるであろう。エンコーダ品質設定値を準備するために、レンダラは、現在のフレームからの測定されたフレーム時間、複数の以前フレームからの測定されたフレーム時間、およびエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用するであろう。このような計算値は、図3を参照しながら詳しく説明する。
【0034】
また、サーバで実行される他のプロセスは、エンコーダ設定にヒントを与えるために使用されるフレーム情報へのアクセス(access)を有してよい。例えば、レンダラを含むゲームエンジンは、エンコーダ品質設定を減少させるために、ゲームによってトリガーされる(triggered)視覚的効果によってエンコードされたビデオ帯域幅に測定されたインパクト(measured impact)を使用してよい。与えられた視覚的効果の追加のエンコード費用に関する情報を収集するために、開発者は、多様なエンコーダ品質設定によってエンコードするとき、効果を適用し、ビットレートにおける増加を測定する必要がある。このような測定は、視覚的効果を含むフレームに対するエンコードされたフレームサイズが視覚的効果を含まない以前のフレームとほぼ同一のエンコードされたフレームサイズである品質を選択するのに使用されてよい。視覚的効果のために選択された品質設定とデフォルト(default)品質設定との差は、設定デルタ(settings delta)と呼ばれる。エンコーダは、選択された品質を使用するようにヒントを与えるか、測定された設定デルタ分だけ現在の品質を減少させるようにヒントを与えてよい。その結果は、視覚的効果イベントをルックアップテーブルまたは他のタイプのインデックスされた(indexed)配列のような関連するエンコーダヒントに容易に変換することのできるフォーマット(format)に格納されなければならない。
図3は、フレーム時間ピークとフレーム時間バレー(valley)を検出した後、これに応じてエンコーダ設定を変更することを示した例示図である。このような例では、ビデオストリームのビットレートに対する影響を推定するために、レンダリング時間とイメージエントロピとの相関度を使用する。フレームが多くの新たな視覚的情報、すなわち、第1時間内のフレームに寄与する追加のエレメントを含めば、以前フレームと比べるときに、フレームをレンダリングするのにより多くの時間がかかるようになる。例えば、フレームが以前フレームとほぼ同一の時間でレンダリングされれば、環境に大きな変更はなかったと見なされる。このような暗示的相関度(implied correlation)は、特に1人称ゲーム/エンジンで明確である。レンダリングされたフレーム時間が急に長くなれば、環境内に何かが新たに導入されたことを意味する。また、エンコーダは、スクリーンを覆う急な爆発効果またはスクリーンの急なジオメトリ(geometry)のような新たなビデオ情報によって困難を感じるはずである。これと同様に、フレームの多くの新たな情報がエンコーダによって計算された残差のサイズを増加させるはずである。したがって、レンダリングピーク時間をモニタリングすることは、高エントロピイメージがビデオストリームのビットレートにスパイクを引き起こす前に、高エントロピイメージを含むフレームを識別することに繋がるであろう。
【0035】
ローリング平均(rolling average)は、長期トレンド(long-term trend)を考慮しながら、短期異常値(outlier)を識別するための信号処理および統計分析に使用される。ローリング平均は、特定の個数の以前のデータポイント(point)の算術平均を求めることによって計算される。ローリング平均の計算に使用される以前のデータポイントのセットは、ローリングウィンドウ(rolling window)と呼ばれる。ライブレンダリングの場合、ローリング平均フレーム時間から逸脱したフレーム時間を識別することにより、高エントロピフレームを識別することができる。このような例におけるローリング平均フレーム時間300は、以前のローリングウィンドウに対する平均フレーム時間である。すなわち、フレーム時間がローリングウィンドウ内の各フレームに対して合算された後、その合計がローリングウィンドウ内のフレームの数によって割られる。ローリングウィンドウのサイズは、一般的なデータトレンドを調査するためにランタイムプロファイリング中に測定された長期フレーム時間トレンド(long-term frame-time trend)の一般的な周波数に基づいてチューニングされてよい。10個のフレームのローリングウィンドウサイズの例において、平均フレーム時間は、以前の10個フレーム時間を基盤として計算されるであろう。ローパスフィルタフィルタ(low-pass filter)の副作用として、ローリングウィンドウが小さすぎると、ピーク検出において必要なものよりも多くの誤検出(false-positive)が生じることがある。実際に、より長いフレーム時間がレンダラで頻繁に発生する長期的な行動パターンとして説明されるとき、フレームは「例外的な忙しさ(exceptionally busy)」に分類される。ローリング平均フレーム時間300は、上限公差302と下限公差304を伴う。公差は、フレーム時間で引抜的な短期トレンドを識別するためにチューニングされてよい。1秒あたり60フレームで実行されるリアルタイムレンダラに対し、±1msまたは約6.25%の公差で十分であってよい。フレーム時間は、どのエンコーダヒンティングもトリガーすることなく、ローリング平均フレーム時間の公差内で変更されてよい。適切なウィンドウサイズと公差値を求めることは、フレーム時間で一般的なトレンドを決定するために複数のランタイムプロファイリングを要求することがある。例えば、1秒あたり100フレームで実行されるゲームは、他のフレームごとにシャドウ(shadow)だけをアップデートし、10%よりも大きい公差を要求することがある。これとは反対に、ゲームは、0.5msに過ぎない最も厳密な視覚的効果であって、33msの極めて安定的なフレーム時間で1秒あたり30フレームによって円滑に実行され、公差は1.5%と低い。
【0036】
現在フレームに対するフレーム時間は、ローリング平均フレーム時間と比較される。現在のフレーム時間が公差境界の外側にあれば、品質はエンコーダで調節される。隣接するかほぼ隣接するフレーム間のフレーム時間における一般的な変更(短期トレンド)および特定のウィンドウにわたるフレーム時間の変化(例えば、周期的に繰り返されるパターンまたは他の長期トレンド)を調査するために、公差境界がプロファイリングと呼ばれるプロセスを利用してフレーム時間を測定することで計算されてよい。さらに、高エントロピ/ビジーモーメント(moment)の間には、エンコーダヒンティングがトリガーされるまでローリングウィンドウサイズおよび公差が調節されてよいが、プレイヤが周辺を歩き回って環境を探険する瞬間はそうでないことがある。「フレーム2」306の例のように、フレーム時間が上限公差302を超過すれば、エンコード品質は減少されるであろう。「フレーム5」308の例のように、フレーム時間が下限公差304未満であれば、エンコーダ品質は増加するであろう。特定の実施形態において、フレーム時間が公差以下に低下するたびに、エンコード品質が最大容量まで再増加されてよい。また、実施形態によって、システムは、品質を低めるために使用されるものと類似のスケーリング方法を利用することで、品質がさらに遅くバックアップされるようにスケーリングするように選択してもよい。
【0037】
ヒンティング方法の一例として、上限310および下限312品質設定の間で品質をスケーリングしてよい。例えば、上限はデフォルト品質設定であってよく、下限はデフォルト品質の50%のような一部の割合であってよい。フレーム時間ピークが公差を超過して低下すれば、品質設定は、公差を超過するフレーム時間ピークのサイズに基づいて上限と下限の間で線形的にスケーリングされる。フレーム時間が公差未満に低下すれば、品質設定は上限値に戻ってよい。
【0038】
公差外のフレーム時間に対する品質スケーリング値を計算するために、フレーム時間は、下記の数式(1)に示すように、ローリング平均フレーム時間に対して正規化されなければならない。
【0039】
【数1】
【0040】
正規化された時間から1を引くことにより、ローリング平均フレーム時間からのフレームの偏差をもたらす。偏差を公差で割った後に1を引くことにより、スケーリング値を提供する。このようなスケーリング値は、0と1の間で維持されるように固定されなければならない。以下の数式(2)に示すように、すべての陰のスケーリング値は、0にクランプ(clamped)されなければならず、1を超過するすべての値は1にクランプされなければならない。
【0041】
【数2】
【0042】
クランプされたスケーリング値は、上限品質設定と下限品質設定の間を補間する(interpolate)のに使用されてよい。以下の数式(3)に示すように、クランプされたエンスケーリング値0は上限品質を示し、クランプされたスケーリング値1は下限品質を示す。
【0043】
スケーリングされた品質設定=最大-(スケーリング値×(最大-最小))・・・(3)
【0044】
一例として、ローリング平均が15msであるとき、「フレーム2」306が16msかかれば、結果的にクランプされたスケーリング値は0.025または2.5%である。上限品質値がデフォルト品質設定であり、下限がデフォルト品質の50%であれば、このフレームに対するスケーリングされた品質設定はデフォルト品質の98.75%となるはずである。
【0045】
ローリング平均が15.25msであるとき、「フレーム5」308が14.25msかかれば、フレーム時間は公差未満となり、スケーリング値は0にクランプされる。スケーリングされた品質設定は、上限品質設定に設定されるであろう。
【0046】
図4の段階406に示すように、集合された(aggregated)エンコーダ品質設定値をヒンティングのためにエンコーダに送信する前に、図4の段階400に示すように、準備段階からの準備されたエンコーダ品質設定を結合することによって複数のエンコーダヒンティング方法が階層化(layered)されてよい。一実施形態において、すべてのソース(source)からの寄与を同一に含む単一値を生成するために、準備されたエンコーダ品質設定の算術平均が求められてよい。他の実施形態において、加重(weighted)算術平均は、エンコーダヒンティングのためのエンコーダ品質設定値に寄与することのできる各ソースに加重値を割り当てることによって計算されてよい。割り当てられた加重値は、1つの寄与するソースを他のものよりも強く評価するのに使用されてよい。例えば、フレームタイムピークイベントからの寄与は、単一視覚効果イベントからの寄与と比べるとき、エンコードされたビットレートにおける変更に対してより強い相関度を有することがあるため、フレームタイムピークイベントからの寄与をより高く評価することが好ましい場合がある。加重算術平均は、以下の数式(4)に示すように標準定義を利用して計算されてよいが、ここで、i=1は、n個の品質設定のセットにおいて1番目の数字を示す。数学的セットのインデックスは、0から始まるプログラミングインデックスとは異なり、1から始まる。
【0047】
【数3】
【0048】
図4は、ライブレンダラのランタイム中に事前生成されたエンコーダ品質設定を使用することを概略的に示したフローチャートである。「ゲームシーケンスモニタリング」段階400で、レンダラは、あるセットの事前生成されたエンコーダ品質設定のセットを有するシーケンスをモニタリングしなければならない。このようなシーケンスは、エンジン内のリアルタイムカットシーンのようなフレームの時間的に予測可能なシーケンス、またはプレイヤの位置が知られたときにランタイム中に時系列に変換可能な空間的に予測可能なシーケンスを含んでよい。時間的に予測可能なシーケンスは、すべてのフレームが隣接したものと複数の知られた関係を有するフレームのシーケンスである。すなわち、フレームのシーケンスは、一定の長さ、一定の順序のものであれば時間的に予測可能であり、ある2つの隣接するフレームは、ピクセルデータおよびモーションデータで一貫した関係を有する。空間的に予測可能なシーケンスは、レンダラのランタイム中に仮想空間がトラバース(traversed)されるときに構成される時間的シーケンスに対して推論を生成するのに使用される2つの隣接した仮想位置間の複数の関係を提供する。すなわち、仮想カメラが2つの仮想位置を移動するとき、仮想空間における2つの位置が時間的に予測可能なシーケンスを生成する場合、仮想空間における2つの位置は空間的に関連する。例えば、ビデオゲームにおいて、2つの位置の移動がピクセルデータおよびモーションデータがある程度一致するビデオを生成する場合、2つの隣接する位置は時間的に関連する。これは、一般的に、プレイヤを取り囲む環境と背景は、プレイヤがレベルを通過するときに固定された位置でレンダリングされるため、ビデオゲームで大部分の3Dレベルに該当する。
【0049】
エンコーダ品質設定の事前生成については、図5を参照しながら詳しく説明する。事前生成されたエンコーダ品質設定は、ルックアップテーブルやヒートマップのようなランタイムで読み取り可能なフォーマットとしてサーバのディスク(disk)に格納される。「ゲームシーケンスに対する事前生成されたエンコーダ設定の探索」段階602で、シーケンスの開始が検出されるとき、検出されたゲームシーケンスに対する事前生成されたエンコーダ品質設定が読み取られて準備される。エンコーダ品質設定が格納前に正規化された場合、エンコーダ品質設定が準備される必要がある。準備は、正規化されたエンコーダ品質設定に、ランタイムエンコーダ品質設定、ターゲット(target)エンコーダ品質設定、または複数の他のソースからのエンコーダ品質設定を掛けたものとして含まれてよい。特定の実施形態において、イベントの検出は、シーケンスそれぞれに対する事前生成されたエンコーダ品質設定であってよい。他の実施形態において、それぞれのカットシーンが、設定が存在するシーケンスのリストにあるか否かの決定を始めるときに、ランタイムでチェック(check)が実行されてよい。事前生成されたエンコーダ品質設定が格納前に正規化されれば、エンコーダ品質設定を準備するために乗算段階があるであろう。図6を参照しながら説明する例において、エンコーダ品質設定は、エンジン内のリアルタイムカットシーンでフレームに対して生成され、シーケンスの1番目のフレームとして正規化される。このような正規化された時間シリーズ(time series)の場合、正規化された値にシーケンスの1番目のフレームに対するランタイムエンコーダ品質設定を掛けたものにより、エンコーダ品質設定が準備される必要があるであろう。「それぞれのエンコードされたフレームに対するエンコーダ設定のレポーティング」段階604で、エンコーダ品質設定は、各フレームでエンコーダによってレポーティングされ、必要によっては利用可能でなければならない。図7を参照しながら説明した例において、エンコーダ品質設定は、マップ(map)の各位置に対して生成され、全体マップの平均エンコーダ品質設定によって正規化される。このような正規化された空間シリーズ(spatial series)の場合、正規化された値にシーケンスの1番目のフレームに対するランタイムエンコーダ品質設定を掛けたものにより、エンコーダ品質設定の準備する必要があるはずである。
【0050】
「事前生成されたエンコーダ設定でエンコーダにヒントを与える」段階606で、エンコーダ品質設定は、シーケンスの各フレームに対してエンコーダに送信されるであろう。エンコーダは、次のフレームをエンコードするために、レンダラから送信されたエンコーダ品質設定を使用するであろう。レンダラは、シーケンスが完了するまで、事前生成されたエンコーダ品質設定を準備し、各フレームでエンコーダにヒントを与え続けるであろう。シーケンスが終了するとき、レンダラは、次のシーケンスをモニタリングし続けるであろう。図6を参照しながら説明したエンジン内のリアルタイムカットシーンの例に対し、エンコーダは、カットシーンが終わるまで、カットシーンの各フレームに対してヒントを受けるであろう。図5を参照しながら説明したヒートマップ方法の例に対し、エンコーダは、プレイヤがヒートマップによって定義された領域の境界内にある全体持続時間の間、ヒントを受けるであろう。
【0051】
図5は、ライブレンダリングされたシーケンスに対するエンコーダ品質設定を事前生成する段階を概略的に示したフローチャートである。エンコーダ品質設定は予測可能であり、測定可能な時間的または空間的コンポーネント(component)を有するシーケンスに対して事前生成されてよい。シーケンスは、プレイヤキャラクタ(player character)によって現在着用されている鎧(armor)を、レンダリングするエンジン内のリアルタイムカットシーンまたはイベントなどが進行される間に、プレイヤが動いたり辺りを見回したりできるように許容するワールド内(in-world)のカットシーンのような予測することのできない部分を有することがある。エンジン内のリアルタイムカットシーンのような時間シリーズにおける隣接フレーム(adjacent-frame)関係、またはビデオゲームレベルでトラバース可能な領域のようなフレームシーケンスを生成するようにランタイム中に使用される仮想空間における隣接位置関係を探索することにより、予測可能な部分を有するシーケンスが識別されなければならない。「シーケンス選択」段階500では、このようなシーケンスが識別されなければならない。
「シーケンスに対するエンコーダ設定の生成」段階502で、エンコーダにおいて、エンコーダ品質設定は、一定のビットレートを維持することを目標に、シーケンスに対して生成されなければならない。エンジン内のリアルタイムカットシーンエンコーダ品質設定は、カットシーンのビデオを記録してマルチパスエンコードモードでビデオをエンコードすることによって計算されてよい。マルチパスエンコードは、1番目のフレームをエンコードし、エンコードされた1番目のフレームのサイズをすべての後続フレームを制限するのに使用する。各フレームがエンコードされるとき、エンコードされたサイズは、1番目のフレームのエンコードされたサイズと比較され、品質設定は、エンコードされたフレームサイズがサイズに近づくまで現在フレームに対して調節される。特定の実施形態において、フレームのシーケンスは、マルチパスエンコードモードで固定された数にエンコードされてよい。他の実施形態において、シーケンスは、フレームあたりのサイズが値に定着し、最終エンコードパスと最終から2番目のエンコードパスとの間で変更がなくなるまで、マルチパスエンコードモードで連続的なパスによって供給されてよい。エンコーダ品質設定は、結果のエンコードされたビデオから生成されるか抽出されるとき、記録されてよい。生成されたエンコーダ品質設定は、与えられたシーケンス内の帯域幅の均衡を維持するためにランタイム中に使用されるはずであり、これにより、ビットレートピークおよびディップ(dip)を防ぐであろう。プレレンダリングされたカットシーンのビデオをプレエンコードして再生のために格納するものとは異なり、このような方式によってエンコーダ品質設定を生成することは、事前生成された品質設定によって提供された帯域幅均等化(equalization)の利点を維持しつつも、エンジン内のリアルタイムカットシーンがカスタマイズ形式のプレイヤの鎧(armor)、武器(weapon)、または他のコスメアイテム(consmetic item)のようなコンテキスト基盤のコンテンツを含むように許容するであろう。
【0052】
類似のプロセスが空間関連シーケンスに対するエンコーダ設定を生成するために、複数回が繰り返されてよい。プロセスについては、図7を参照しながら説明するデータフローを参照しながらより詳しく説明する。
【0053】
エンジン内のリアルタイムカットシーンに対し、各フレームに対するエンコーダ品質設定は、シーケンス内の1番目のフレームのエンコーダ品質設定値で割られることによって正規化されなければならない。これは、プレイヤの鎧またはコスメアイテムのようなシーケンスの動的エレメントがランタイムで準備された最終エンコーダ品質設定に現われるようにする。ヒートマップに格納される空間関連シーケンスに対し、各エンコーダ品質設定は、各エンコーダ品質設定をマップワイド(map-wide)平均エンコーダ品質設定で割ることにより、ヒートマップとして定義された全体領域にわたって平均エンコーダ品質設定で正規化されなければならない。ヒートマップの例は、図8に示すとおりである。「シーケンスの各フレームに対するエンコーダ品質設定の正規化および格納」段階504で、レンダリングプロセスで生成された正規化されたエンコーダ値は、各フレームに対するエンコーダ品質設定のリストまたはマップの各位置に対してエンコーダ品質設定を定義するヒートマップのような適切なランタイム読み取り可能なフォーマットとして構造化され、格納される。
【0054】
図6は、決定された長さのエンジン内(in-engine)のリアルタイムカットシーン(cutscene)に対するエンコーダ品質設定を事前生成する間、データがどのように生成されるかを示した例示図である。プレレンダリングされたカットシーンのようなエンジン内のリアルタイムカットシーンは、他のライブレンダリングされたビデオ出力を生成するのに使用される同一のレンダリングエンジンを使用してランタイム中に生成される。また、エンジン内のリアルタイムカットシーンは、プレイヤによって着用されたコスメアイテム、プレイヤのグループ内の非プレイヤ(non-player)キャラクタのようなゲーム状態、またはプレイヤの選択によって制御される他のゲーム状態に対する状況(contextual)情報を含んでよい。エンジン内のリアルタイムカットシーンは、プレレンダリングされたカットシーンよりも品質が低かったが、ライブレンダリングされた視覚的忠実度がプレレンダリングされた視覚的忠実度に近づくことにより、エンジン内のリアルタイムカットシーンはより一般化されている。また、ゲームディスクがプレレンダリングされたカットシーンの多様なバージョンを含まないように、言語オプション、解像度オプション、およびキャラクタカスタマイズ型オプションのような複数のオプションがカットシーンのビデオ出力に影響を与えることのできるエンジン内のリアルタイムカットシーンが一般的に使用される。
【0055】
このような例において、1秒あたり60フレームで実行されるゲームのために、約8秒の長さの480フレームの長さのエンジン内のリアルタイムカットシーンが選択される。このようなカットシーンは、すべてのプレイヤのための同一の一連のイベントなどを再生するであろう。カットシーンビデオは、レンダラで記録され、記録されたシーケンス600に一連の480フレームを生成する。記録されたシーケンス600は、マルチパスエンコードモードを使用してエンコードされる。記録されたシーケンスの各フレームをエンコードする間、マルチパスエンコードプロセスは、エンコードされたフレームサイズが1番目のフレームのエンコードされたサイズに近づくようにエンコーダ品質設定を変更するであろう。シーケンスの1番目のフレームは、全体のエンコードされたシーケンスにわたって一定のビットレートを保障するために、フレームサイズレファレンス(reference)として使用される。
【0056】
マルチパスエンコーダ品質設定602は、エンコーダにおけるエンコードプロセスの間に記録されるか、エンコーダによって生成されるエンコードされた結果から抽出される。エンコーダ品質設定は、順序化されたフロート(float)のリストである。フロートあたりの4バイトにおいて、全体の順序化されたフロートのリストは、1,920バイトのデータのみを消費する。小さなファイルサイズは、ライブレンダラがランタイム中にメモリに事前生成されたエンコーダ設定の複数のセットを格納するように許容し、メモリ制約条件によって実行しなくても、すべてのゲームシーケンスに対して本明細書に説明された、プロセスを実行することの有利な結果をもたらすことができる。
【0057】
レンダラにおいて、エンコーダ品質設定は、以下の数式(5)に示すように、1番目のフレームによって正規化される。
【0058】
【数4】
【0059】
正規化されたエンコーダ品質設定604は、好ましくはエンコーダにおいて、順序化されたフロートのリストに格納される。
【0060】
カットシーンがランタイム中にプレイを始めるとき、順序化された正規化された品質設定604のリストが読み取られる。正規化された品質設定は、エンコーダによってレンダリングエンジンにレポーティングされたように、シーケンスの1番目のフレームに対してランタイムエンコーダ品質設定に掛けられた後、カットシーンの各後続フレームに対してエンコーダにヒントを与えるのに使用される。特定の実施形態において、一定割合ファクタ(constant rate factor:CRF)モードで実行されるH.264標準互換ライブラリffmpegは、-crfスイッチを利用して命令ライン(command line)のオーバーライド(override)量子化パラメータ値を収容するであろう。
【0061】
エンコーダ品質設定を正規化することは、事前生成されたエンコーダ品質設定が複数の他のコンテキストでカットシーンのランタイム再生中に使用されるように許容する。例えば、正規化されたエンコーダ設定604をシーケンスの1番目のフレームに対してエンコーダによってレポーティングされたランタイムエンコーダ品質設定に掛けることは、プレイヤが着用するために選択したカスタマイズ可能のプレイヤの鎧とは関係なく、全体カットシーンに対して一定のビットレートを生成する。これと同様に、方法は、エンジン内のリアルタイムカットシーンが再生される、スクリーン解像度のような、他のレンダリング設定を説明する。
【0062】
図7は、プレイヤがビデオゲームの仮想空間を通過するとき、ランタイムで生成されたシーケンスのような空間関連シーケンスに対するエンコーダ品質設定の事前生成を示した例示図である。ビデオゲームにおいて、プレイヤ位置は、プレイヤのビューがエンコードされたビデオストリームのビットレートに不均衡的に大きな影響を与えるため、一般的に出力されるビデオのイメージエントロピと相関関係がある。このような相関度は、オープン(open)領域でキャプチャされたビデオと狭い(tight)領域でキャプチャされたビデオの間でエンコードされたビデオビットレートを比べるときに、最も明確となる。野外領域のようなオープン領域は高い平均ビットレートでビデオを生成する反面、廊下のような狭い領域は低い平均ビットレートでビデオを生成する。このような関係は、野外領域は、植物のアンビエントアニメーション(ambient animation)のような競争モーションが多くの不均一で広大な領域である傾向にある反面、室内領域は、凝集力のあるモーションベクトルと小さな残差(residual)を生成する静的な構成のジオメトリで構成される傾向にあるため、発生する。
【0063】
マップはグリッド(grid)によって分割されてよく、エンコーダ品質設定は、図5に示すように、正規化されたエンコーダ品質設定のヒートマップを形成するようにマップの各セルに対して事前生成されてよい。与えられたプレイヤ位置に対する一般的なエンコードされたビデオビットレートは、複数の実際の通しプレイ(playthrough)を使用し、手順的に生成された通しプレイによって記録されてよい。実際のプレイヤは予測することができないため、プレイヤが仮想空間を通過する方式を正確にキャプチャする通しプレイを手順的に生成することは不可能である。手順的な通しプレイは、全体マップのカバレージを迅速に生成するために予測される通過経路に対して生成されてよいが、実際のプレイヤによって発見されることのある予測できない通過経路は見逃す場合がある。各アクセスは、短所を有するであろう。実際に遠隔測定の追跡には相当に多くの時間がかかるが、手順的に生成されたデータは、実際のプレイ経験を正確に反映しないこともある。特定の実施形態において、2つの記録の結合が、より正確なヒートマップの提供に使用されてよい。
【0064】
記録されたビデオは、図6の記録されたシーケンス600で示すようなビデオフレームを含まなければならず、さらに各フレームに対するプレイヤ位置を設定するであろう。プレイヤ位置は、3D空間内にあるか、トップダウン(top-down)マップで表現されるような水平な2D平面として単純化されてよい。2つの例示的に記録された通しプレイ、すなわち、段階700において「第1記録された通しプレイ」で示された第1記録通しプレイ、および段階702において「第2記録された通しプレイ」で示された第2記録された通しプレイの部分が、図7を参照しながら説明した方法に示されている。ビデオフレームは、プレイヤ位置によってキャプチャされる。キャプチャされた通しプレイの各ビデオフレームは、位置によって適切なセルに分類される。このような例において、第1記録された通しプレイからのフレーム4は、段階700の「第1記録された通しプレイ」で表現され、第2記録された通しプレイからのフレーム2は、段階702の「第2記録された通しプレイ」で表現される。「ヒートマップ」段階704で両方ともが、段階706で「セルB6」にセルB6に分類される。このような例示的なセルは相当に大きいため、図8に示すような例示的なヒートマップは、より大きな解像度のためにより小さなセルを有するヒートマップを示す。
【0065】
手順的に生成された通しプレイと実際の通しプレイは、両方ともレンダラで生成されて記録されてよい。結果の通しプレイ記録は、中央のレンダラ位置で収集されてよい。複数の通しプレイが収集されるとき、ヒートマップの各セルは、セル内の位置に記録された複数のフレームを有してよい。遠隔測定サーバ105は、このようなデータを収集するために、デベロップメント(develop)中に使用されてよい。また、レンダリング/ゲームエンジンは、遠隔測定を生成し、これを中央位置に送信してよい。遠隔測定サーバ105は、レンダラに対してローカルまたは遠隔であってよい。また、生成された遠隔測定は、ローカルレンダリングマシンから生成された遠隔測定ファイルを手動で収集することによって収集され、中央格納所に送信されてよい。図7では、「セルB6フレーム」段階708として、セルB6に属するフレームのリストの開始を示している。このような空間関連フレームのリストは、より多くの通しプレイ記録が収集されるか、生成されるほど大きくなるであろう。
【0066】
セルに属するフレームの収集は、「ターゲット品質エンコード」段階710に示されるターゲットエンコーダ品質設定により、ライブストリーミング中に使用されるシングルパスエンコードモードを利用してエンコードされてよい。エンコードされたフレームサイズは、セルに属する各フレームに対して生成されるであろう。図7では、「セルB6フレームに対するエンコードされたフレームサイズ」段階712に示されたセルB6に属するエンコードされたフレームサイズのリストの開始を示している。このようなエンコードされたフレームサイズは、セルに対する平均エンコードフレームサイズを求めるために平均化されてよい。図7では、段階714に示された「セルB6に対する平均エンコードフレームサイズ」でセルB6に属する平均エンコードフレームサイズを示している。各セルに対する平均エンコードフレームサイズを求めるために、ヒートマップのすべてのセルに対し、プロセスが繰り返されなければならない。平均エンコードフレームサイズは、ヒートマップのすべてのセルに対する平均フレームサイズのリストの表現として、段階714に示される「セルB6に対する平均エンコードフレームサイズ」でセルB6に対して表現され、段階716に示される「セルB7に対する平均エンコードフレームサイズ」としてセルB7に対して表現される。
【0067】
各セルに対するすべての平均フレームサイズは、段階718に示された「すべてのセルに対する平均エンコードフレームサイズ」からマップワイド平均フレームサイズを求めるために平均化されなければならない。このようなマップワイド平均フレームサイズは、ターゲット帯域幅として使用されてよい。マップワイド平均よりも大きな平均エンコードフレームサイズを有するセルは、平均セルフレームサイズがマップワイド平均とほぼ同一になるまで、より低いエンコーダ品質設定に再エンコードされるであろう。これと同様に、マップワイド平均よりも小さな平均エンコードフレームサイズを有するセルは、平均セルフレームサイズがマップワイド平均とほぼ同一になるまで、より高いエンコーダ品質設定に再エンコードされるであろう。特定の実施形態において、与えられたセルに対するフレームのシーケンスは、マルチパスエンコードモードで固定された数のパスによってエンコードされてよい。他の実施形態において、シーケンスは、フレームあたりのサイズが値に定着し、最終エンコードパスと最後から2番目のエンコードパスとの間で変更されなくなるまで、マルチパスエンコードモードで連続的なパスによって供給されてよい。図7では、段階714におけるセルB6に対する平均エンコードフレームサイズは、段階718に示された「すべてのセルに対する平均エンコードフレームサイズ」におけるすべてのセルに対する平均エンコードフレームサイズよりも高い。「セルB6フレーム」段階708で、セルB6に属する空間関連フレームは、「セルB6に対するより低い平均エンコードフレームサイズ」段階724におけるセルB6に対する平均エンコードフレームサイズが「すべてのセルに対する平均エンコードフレームサイズ」段階718に示されたすべてのセルに対する平均エンコードフレームサイズとほぼ同一のサイズになるまで、「より低い品質エンコード」段階720で、マルチパスエンコードモードおよびターゲットフレームサイズを使用してエンコーダでオリジナル通しプレイのシーケンスのコンテキスト内で再エンコードされる。プロセスがすべてのセルに対して完了すると、セルに対するすべての平均フレームサイズは、ほぼ同一のサイズでなければならない。
【0068】
各セルは、マップワイド平均エンコードフレームサイズと類似のサイズのセルに対する平均エンコードフレームサイズを生成するのに使用された、関連するエンコーダ品質設定を有さなければならない。セルあたりのエンコーダ品質設定は、以下の数式(6)に示すように、マップワイド平均エンコーダ品質設定によって正規化されてよい。
【0069】
【数5】
【0070】
ビデオストリーミングの間、ゲームは、現在のプレイヤ位置に対応するヒートマップセルからの正規化されたエンコーダ品質設定をインポートし、これを、品質設定オーバーライドを送信することによってエンコーダにヒントを与えるために使用してよい。上述したように、特定の実施形態において、一定割合ファクタ(CRF)モードで実行されるH.264標準互換ライブラリffmpegは、エンコーダにヒントを与えるために、-crfスイッチを利用して命令ラインのオーバーライド量子化パラメータ値を収容するであろう。正規化されたエンコーダ品質設定が抽出されることのできるヒートマップの例は、図8に示すとおりである。
【0071】
エンコーダ品質設定が正規化されることにより、これらは、図4の「ゲームシーケンスに対して事前生成されたエンコーダ設定の探索」段階402で説明した準備段階間、空間関連シーケンスおよび時間関連シーケンスのような複数のソース(source)から結合されてよい。このような段階の前に、正規化された値は、各ソースシーケンスからのエンコードされたビデオビットレートに対する影響を暗示的に説明するエンコーダ品質設定を生成するためにともに掛けられてよい。例えば、プレイヤの位置は、ヒートマップから事前生成された正規化されたエンコーダ品質設定を読み取るのに使用され、プレイヤの武器(weapon)は、時間シリーズの事前生成された正規化されたエンコーダ品質設定をファイアリングする(firing)シーケンスを生成する。このような2つの正規化された値は、エンコードされたビデオビットレートに対するプレイヤ位置と武器選択の効果を統合するために、準備段階中にともに掛けられる。
【0072】
上述した説明および図面は、本発明の原理を例示するためのものに過ぎない。本発明は、好ましい実施形態によって制限されるように意図されてはならず、該当の技術分野において通常の知識を有する者にとって明白である、多様な方式で実現されるであろう。本発明の多数の応用は、該当の技術分野において通常の知識を有する者によって容易に実現されるであろう。したがって、開示された特定の例示または図に示されて説明された正確な構成と動作によって本発明を制限することは好ましくない。むしろ、すべての適切な修正および均等物が、本発明の範囲内に属するものと理解されなければならない。
【0073】
〔付記1〕
段階を含むデータをエンコードするためのコンピュータで実現される方法であって、
段階は、
ゲーム環境における1つ以上の通しプレイ(playthrough)を記録する段階、
前記1つ以上の通しプレイからの複数のフレーム(frame)をヒートマップ(heatmap)上の複数のセル(cell)に分類する段階(前記分類する段階は、前記ヒートマップと関連する分類されたフレームのリストを結果として生む)、
レンダラ(renderer)において、前記分類されたフレームのリストを収集する段階、
前記ヒートマップの各セルに対する平均エンコードフレームサイズ(average encoded frame size)を計算するために、前記分類されたフレームのリストから1つ以上のフレームをエンコードする段階(各平均エンコードフレームサイズは、セルあたり(per-cell)の正規化されたエンコーダ品質設定と関連する)、および
各セルの前記平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する段階
を含み、
ゲームプレイ(gameplay)の間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンス(video sequence)をコーディングするようにエンコーダにヒント(hint)を与えるために使用される、方法。
〔付記2〕
前記1つ以上のフレームは、
シングルパス(single pass)によって前記ビデオシーケンスにコーディングされる、付記1に記載の方法。
〔付記3〕
前記レンダラにおいて、前記セルあたりの正規化されたエンコーダ品質設定を格納する段階
をさらに含む、付記1に記載の方法。
〔付記4〕
前記1つ以上の通しプレイは、
遠隔測定(telemetry)サーバに格納される、付記1に記載の方法。
〔付記5〕
前記1つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置(player location)で構成される、付記1に記載の方法。
〔付記6〕
前記プレイヤ位置は、
前記エンコーダにヒントを与える前記セルあたりの正規化されたエンコーダ品質設定を選択するのに使用される、付記5に記載の方法。
〔付記7〕
前記セルあたりの正規化されたエンコーダ品質設定は、
下記の数式
【数6】
によって解計算される、付記1に記載の方法。
〔付記8〕
空間関連シーケンスおよび時間関連シーケンスからの前記セルあたりの正規化されたエンコーダ品質設定を結合する段階
をさらに含む、付記1に記載の方法。
〔付記9〕
データをエンコードするためのシステムであって、
レンダラ(前記レンダラは、
ゲーム環境における1つ以上の通しプレイを記録し、
前記1つ以上の通しプレイからの複数のフレームをヒートマップ上の複数のセルに分類し(前記分類することは、前記ヒートマップと関連する分類されたフレームのリストを結果として生む)、
前記分類されたフレームのリストを収集し、
各セルの平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する)および、
エンコーダ(前記エンコーダは、
前記ヒートマップの各セルに対する平均エンコードフレームサイズを計算するために、前記分類されたフレームのリストから1つ以上のフレームをエンコードし、各平均エンコードフレームサイズは、セルあたりの正規化されたエンコーダ品質設定と関連する)
を含み、
ゲームプレイの間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
〔付記10〕
前記1つ以上のフレームは、
シングルパスによって前記ビデオシーケンスにコーディングされる、付記9に記載のシステム。
〔付記11〕
前記レンダラは、
前記セルあたりの正規化されたエンコーダ品質設定を格納する、付記9に記載のシステム。
〔付記12〕
前記1つ以上の通しプレイは、
遠隔測定サーバに格納される、付記9に記載のシステム。
〔付記13〕
前記1つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置で構成される、付記9に記載の方法。
〔付記14〕
前記プレイヤ位置は、
前記エンコーダにヒントを与える前記セルあたりの正規化されたエンコーダ品質設定を選択するのに使用される、付記13に記載の方法。
〔付記15〕
前記セルあたりの正規化されたエンコーダ品質設定は、
以下の数式
【数7】
によって計算される、付記9に記載のシステム。
〔付記16〕
前記セルあたりの正規化されたエンコーダ品質設定は、
空間関連シーケンスおよび時間関連シーケンスから結合される、付記9に記載のシステム。
〔付記17〕
データをエンコードするためのシステムであって、
レンダラ(前記レンダラは、複数のフレームで構成されるビデオシーケンスを記録する)および、
エンコーダ(前記エンコーダは、前記ビデオシーケンスの1番目のフレームに対してエンコーダ品質設定を最適化するマルチパス(multi-pass)モードで前記ビデオシーケンスをコーディングし、前記エンコーダは、前記エンコーダ品質設定を記録する)を含み、
前記レンダラは、
前記エンコーダ品質設定を前記ビデオシーケンスの前記1番目のフレームによって正規化し、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
〔付記18〕
正規化されたエンコーダ品質設定は、
以下の数式
【数8】
によって計算される、付記17に記載のシステム。
〔付記19〕
前記正規化されたエンコーダ品質設定は、
順序化されたフロート(float)のリストに格納される、付記17に記載のシステム。
〔付記20〕
前記正規化されたエンコーダ品質設定は、
ランタイムエンコーダ品質設定に掛けられ、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、付記17に記載のシステム。
〔付記21〕
前記ビデオシーケンスは、
1つ以上の他のビデオシーケンスと時間的に関連する、付記17に記載のシステム。
〔付記22〕
段階を含むエンコードのためのコンピュータで実現される方法であって、
段階は、
複数のフレームで構成されるビデオシーケンスを記録する段階、
前記ビデオシーケンスの1番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによって前記ビデオシーケンスをエンコードする段階、
前記エンコーダ品質設定を記録する段階、および
前記エンコーダ品質設定を前記ビデオシーケンスの前記1番目のフレームによって正規化する段階
を含み、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするようにエンコーダにヒントを与えるために使用される、方法。
〔付記23〕
正規化されたエンコーダ品質設定は、
以下の数式
【数9】
によって計算される、付記22に記載の方法。
〔付記24〕
前記正規化されたエンコーダ品質設定は、
順序化されたフロートのリストに格納される、付記22に記載の方法。
〔付記25〕
前記正規化されたエンコーダ設定をランタイムエンコーダ品質設定に掛ける段階
をさらに含み、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、付記22に記載の方法。
〔付記26〕
前記ビデオシーケンスは、
1つ以上の他のビデオシーケンスと時間的に関連する、付記22に記載の方法。
〔付記27〕
段階を含むエンコーダヒンティング(hinting)のためのコンピュータで実現される方法であって、
段階は、
ライブストリーミング(live-streaming)アプリケーションのフレームレンダリングにおける変更と関連する情報をモニタリングする段階、
公差境界(tolerance boundary)、ローリング(rolling)平均フレーム時間、およびフレーム時間の短期トレンド(short-term trend)を計算する段階(前記計算値は、ビデオデータでフレーム時間ピーク(peak)を識別するのに使用される)および、
前記フレーム時間ピークのサイズに比例して前記ビデオデータのフレーム出力の品質設定を変調するようにエンコーダにヒントを与える段階
を含む、方法。
〔付記28〕
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの前記計算値は、
高エントロピ(high-entropy)フレームを識別するのに使用される、付記27に記載の方法。
〔付記29〕
前記公差境界の外側のフレーム時間に対する品質スケーリング値(quality scaling value)を計算する段階
をさらに含み、
前記計算値は、
前記エンコーダにヒントを与えるために使用される、付記27に記載の方法。
〔付記30〕
前記公差境界は、
プロファイリング(profiling)によって計算される、付記27に記載の方法。
〔付記31〕
前記モニタリングされた情報は、
ランタイムレンダリングプロセス中に発生する、メッセージ、計算結果、成果(outcome)、または個別に(discretely)測定可能な値うちのの1つ以上である、付記27に記載の方法。
〔付記32〕
前記モニタリングする段階は、
レンダリングプロセス中のフレームピーク検出を含む、付記27に記載の方法。
〔付記33〕
前記モニタリングする段階は、
非正常的に(unusually)長いか非正常的に短いフレーム時間を識別するために、各フレームのレンダリング時間を検出する段階
をさらに含む、付記32に記載の方法。
〔付記34〕
前記ビデオデータのビットレート(bitrate)に対する前記モニタリングされた情報の効果を計算するために、レンダリング時間とイメージエントロピとの相関度(correlation)を使用する段階
をさらに含む、付記27に記載の方法。
〔付記35〕
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、長期トレンド(long-term trend)を考慮しながら、短期異常値(outlier)を識別するための信号処理および統計分析にローリング平均を使用する段階
をさらに含む、付記27に記載の方法。
〔付記36〕
レンダラにおいてフレーム出力の品質設定に対する品質設定値を計算するために、現在フレームからの測定されたフレーム時間、複数個の以前フレームからの測定されたフレーム時間、および/またはエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用する段階
をさらに含む、付記27に記載の方法。
〔付記37〕
エンコーダヒンティングのためのシステムであって、
サーバを含み、
前記サーバは、
ライブストリーミングアプリケーションのフレームエンコードにおける変更と関連する情報をモニタリングし、
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドを計算し(前記計算値は、フレーム時間ピークを識別するのに使用される)、
前記フレーム時間ピークのサイズに比例してフレーム出力の品質設定を変調するようにエンコーダにヒントを与える、システム。
〔付記38〕
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの前記計算値は、
高エントロピフレームを識別するのに使用される、付記37に記載のシステム。
〔付記39〕
前記公差境界の外側のフレーム時間に対する品質スケーリング値を計算することをさらに含み、
前記計算値は、
前記エンコーダにヒントを与えるために使用される、付記37に記載のシステム。
〔付記40〕
前記公差境界は、
プロファイリングによって計算される、付記37に記載のシステム。
〔付記41〕
前記モニタリングされた情報は、
ランタイムレンダリングプロセス中に発生する、メッセージ、計算結果、成果、または個別に測定可能な値のうちの1つ以上である、付記37に記載のシステム。
〔付記42〕
前記モニタリングすることは、
レンダリングプロセス中のフレームピーク検出を含む、付記37に記載のシステム。
〔付記43〕
前記モニタリングすることは、
非正常的に長いか非正常的に短いフレーム時間を識別するために、各フレームのレンダリング時間を検出することをさらに含む、付記42に記載のシステム。
〔付記44〕
前記サーバは、
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、レンダリング時間とイメージエントロピとの相関度を適用する、付記37に記載のシステム。
〔付記45〕
前記サーバは、
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、長期トレンドを考慮しながら、短期異常値(outlier)を識別するための信号処理および統計分析にローリング平均を適用する、付記37に記載のシステム。
〔付記46〕
前記サーバは、
レンダラにおいてフレーム出力の品質設定に対する品質設定値を計算するために、現在フレームからの測定されたフレーム時間、複数個の以前フレームからの測定されたフレーム時間、および/またはエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用する、付記37に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8