(57)【要約】      （修正有）【課題】プレエンコードされたロード推定基盤のエンコーダヒンティングのためのシステムおよび方法を提供すること。【解決手段】段階を含むデータをエンコードするためのコンピュータで実現される方法であって、段階は、１つ以上の通しプレイを記録する段階、１つ以上の通しプレイからの複数のフレームをヒートマップ上の複数のセルに分類する段階、レンダラにおいて、分類されたフレームのリストを収集する段階、分類されたフレームのリストから１つ以上のフレームをエンコードする段階、および、各セルの平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する段階を含む。【選択図】図１
2020110608.tif 000002
【特許請求の範囲】
【請求項１】
段階を含むデータをエンコードするためのコンピュータで実現される方法であって、
段階は、
ゲーム環境における１つ以上の通しプレイ（ｐｌａｙｔｈｒｏｕｇｈ）を記録する段階、
前記１つ以上の通しプレイからの複数のフレーム（ｆｒａｍｅ）をヒートマップ（ｈｅａｔｍａｐ）上の複数のセル（ｃｅｌｌ）に分類する段階（前記分類する段階は、前記ヒートマップと関連する分類されたフレームのリストを結果として生む）、
レンダラ（ｒｅｎｄｅｒｅｒ）において、前記分類されたフレームのリストを収集する段階、
前記ヒートマップの各セルに対する平均エンコードフレームサイズ（ａｖｅｒａｇｅ  ｅｎｃｏｄｅｄ  ｆｒａｍｅ  ｓｉｚｅ）を計算するために、前記分類されたフレームのリストから１つ以上のフレームをエンコードする段階（各平均エンコードフレームサイズは、セルあたり（ｐｅｒ−ｃｅｌｌ）の正規化されたエンコーダ品質設定と関連する）、および
各セルの前記平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する段階
を含み、
ゲームプレイ（ｇａｍｅｐｌａｙ）の間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンス（ｖｉｄｅｏ  ｓｅｑｕｅｎｃｅ）をコーディングするようにエンコーダにヒント（ｈｉｎｔ）を与えるために使用される、方法。
【請求項２】
前記１つ以上のフレームは、
シングルパス（ｓｉｎｇｌｅ  ｐａｓｓ）によって前記ビデオシーケンスにコーディングされる、請求項１に記載の方法。
【請求項３】
前記１つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置（ｐｌａｙｅｒ  ｌｏｃａｔｉｏｎ）で構成される、請求項１に記載の方法。
【請求項４】
前記セルあたりの正規化されたエンコーダ品質設定は、
下記の数式
【数１】
2020110608.tif 000012
によって解計算される、請求項１に記載の方法。
【請求項５】
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、
ゲーム環境における１つ以上の通しプレイを記録し、
前記１つ以上の通しプレイからの複数のフレームをヒートマップ上の複数のセルに分類し（前記分類することは、前記ヒートマップと関連する分類されたフレームのリストを結果として生む）、
前記分類されたフレームのリストを収集し、
各セルの平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する）および、
エンコーダ（前記エンコーダは、
前記ヒートマップの各セルに対する平均エンコードフレームサイズを計算するために、前記分類されたフレームのリストから１つ以上のフレームをエンコードし、各平均エンコードフレームサイズは、セルあたりの正規化されたエンコーダ品質設定と関連する）
を含み、
ゲームプレイの間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
【請求項６】
前記１つ以上のフレームは、
シングルパスによって前記ビデオシーケンスにコーディングされる、請求項５に記載のシステム。
【請求項７】
前記１つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置で構成される、請求項５に記載の方法。
【請求項８】
前記セルあたりの正規化されたエンコーダ品質設定は、
以下の数式
【数２】
2020110608.tif 000013
によって計算される、請求項５に記載のシステム。
【請求項９】
前記セルあたりの正規化されたエンコーダ品質設定は、
空間関連シーケンスおよび時間関連シーケンスから結合される、請求項５に記載のシステム。
【請求項１０】
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、複数のフレームで構成されるビデオシーケンスを記録する）および、
エンコーダ（前記エンコーダは、前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパス（ｍｕｌｔｉ−ｐａｓｓ）モードで前記ビデオシーケンスをコーディングし、前記エンコーダは、前記エンコーダ品質設定を記録する）を含み、
前記レンダラは、
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化し、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
以下の数式
【数３】
2020110608.tif 000014
によって計算される、システム。
【請求項１１】
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、複数のフレームで構成されるビデオシーケンスを記録する）および、
エンコーダ（前記エンコーダは、前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパス（ｍｕｌｔｉ−ｐａｓｓ）モードで前記ビデオシーケンスをコーディングし、前記エンコーダは、前記エンコーダ品質設定を記録する）を含み、
前記レンダラは、
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化し、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
順序化されたフロート（ｆｌｏａｔ）のリストに格納される、システム。
【請求項１２】
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、複数のフレームで構成されるビデオシーケンスを記録する）および、
エンコーダ（前記エンコーダは、前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパス（ｍｕｌｔｉ−ｐａｓｓ）モードで前記ビデオシーケンスをコーディングし、前記エンコーダは、前記エンコーダ品質設定を記録する）を含み、
前記レンダラは、
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化し、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
ランタイムエンコーダ品質設定に掛けられ、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
【請求項１３】
段階を含むエンコードのためのコンピュータで実現される方法であって、
段階は、
複数のフレームで構成されるビデオシーケンスを記録する段階、
前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによって前記ビデオシーケンスをエンコードする段階、
前記エンコーダ品質設定を記録する段階、および
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化する段階
を含み、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするようにエンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
以下の数式
【数４】
2020110608.tif 000015
によって計算される、方法。
【請求項１４】
段階を含むエンコードのためのコンピュータで実現される方法であって、
段階は、
複数のフレームで構成されるビデオシーケンスを記録する段階、
前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによって前記ビデオシーケンスをエンコードする段階、
前記エンコーダ品質設定を記録する段階、および
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化する段階
を含み、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするようにエンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
順序化されたフロートのリストに格納される、方法。
【請求項１５】
段階を含むエンコードのためのコンピュータで実現される方法であって、
段階は、
複数のフレームで構成されるビデオシーケンスを記録する段階、
前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによって前記ビデオシーケンスをエンコードする段階、
前記エンコーダ品質設定を記録する段階、および
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化する段階
を含み、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするようにエンコーダにヒントを与えるために使用され、
正規化されたエンコーダ品質設定は、
前記正規化されたエンコーダ設定をランタイムエンコーダ品質設定に掛ける段階
をさらに含み、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１７年４月２１日に出願された米国仮出願第６２／４８８，５２６号、２０１８年３月２３日に出願された米国仮出願６２／６４７，１８０、および２０１８年４月１１日に出願された米国仮出願第６２／６５５，９０１号の利益を主張する。
【背景技術】
【０００２】
サーバ側のゲームがクライアント側のプレイヤによって制御されるリモートゲーミングアプリケーションは、既存のまたはカスタマイズされたエンコーダを使用し、リアルタイムで３Ｄグラフィックスエンジン（ｇｒａｐｈｉｃｓ  ｅｎｇｉｎｅ）からのビデオ出力をエンコードすることを試みていた。しかし、ビデオゲームの会話形式の特性、特に、ビデオ出力とプレイヤ入力との間のプレイヤフィードバックループ（ｐｌａｙｅｒ  ｆｅｅｄｂａｃｋ  ｌｏｏｐ）は、ゲームビデオストリーミングの待機時間（ｌａｔｅｎｃｙ）が一般的なビデオストリーミングよりも極めて長い。既存のビデオコーディング方法は、エンコード時間を減らすために計算能力（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｐｏｗｅｒ）を交換することができるが、その他の方法はない。エンコードプロセスをビデオレンダリングプロセスに統合するための新たな方法は、エンコード時間を著しく減らすことができる上に、計算能力を低め、エンコードされたビデオの品質を改善し、既存のハードウェアデバイスの相互運用性を維持するためにオリジナルビットストリームデータ形式（ｏｒｉｇｉｎａｌ  ｂｉｔｓｔｒｅａｍ  ｄａｔａ  ｆｏｒｍａｔ）を維持するようになる。
【０００３】
マルチパス（ｍｕｌｔｉ−ｐａｓｓ）エンコードプロセスの１番目のパス（ｐａｓｓ）において、データが連続的なパスに対するビットレート（ｂｉｔｒａｔｅ）の制約条件（ｃｏｎｓｔｒａｉｎｔ）に符合するように効率的にパッキングされる前に、エンコードの費用（ｃｏｓｔ）またはそれぞれのエンコードされたビデオフレームのサイズが計算される。マルチパスエンコードの利点は相当高く、ビットレートの制約条件に対して可能な限り最上の品質を提供するが、既存のマルチパスエンコードは完全なビデオファイルへのアクセス（ａｃｃｅｓｓ）を要求することから、ライブストリーミング（ｌｉｖｅ  ｓｔｒｅａｍｉｎｇ）アプリケーションには適さない。
【０００４】
一般的に、ライブストリーミングアプリケーションは、ビデオを予め使用することができないため、シングルパス（ｓｉｎｇｌｅ−ｐａｓｓ）エンコードを利用する。ライブストリームエンコードに対する時間制約条件は、制限されたビットレートにより、ビデオ情報を効率的にパッキングするためのエンコーダの機能を妨害する。エンコードの費用は、シングルパスエンコードとして計算されないため、高エントロピ（ｈｉｇｈ−ｅｎｔｒｏｐｙ）フレームがエンコードされるときにはネットワークトラフィック（ｎｅｔｗｏｒｋ  ｔｒａｆｆｉｃ）が急増する。
【０００５】
リアルタイムレンダリングされたビデオは、ビデオゲームストリーミングのようなライブストリーミングアプリケーションで多く利用されているが、ここで、高品質および制限された帯域幅は両方とも価値が高い。レンダリングされたビデオは、記録されたビデオとは異なり、フレームをエンコードする費用を推定するのに再使用することのできる各フレームの追加情報へのアクセスを有する。このような方式により、マルチパスエンコード方式における１番目のパスの結果は、ビットレートの制約条件内で最高品質のエンコードされたビデオの取得に近づくことができる。多くのレンダリングエンジンは、レンダリングされるイメージに対する部分的な情報を有し、ランタイム中に使用することのできるエンコーダ品質設定（ｅｎｃｏｄｅｒ  ｑｕａｌｉｔｙ  ｓｅｔｔｉｎｇ）を事前に生成することができる。このような方式により、マルチパスエンコードモードの利点がライブストリーミング環境で達成されるようにすることができる。しかし、後述するように、現在のコンピュータ技術では、増加したエントロピによるトラフィックスパイク（ｓｐｉｋｅ）を保障しながら、高い品質のリアルタイムレンダリングされたビデオのレンダリングを実行するのに十分なエンコード品質を推定するには依然として不足である。さらに、現在は、時間的ではなく空間的にプレエンコードし、リアルタイム環境に残っている状態でマルチパスエンコードを複製するエンコード技術は存在しない。
【０００６】
米国特許第７，８４４，００２  Ｂ２号（「‘００２特許」）は、一定のビットレートを得るために情報ルックアヘッド（ｌｏｏｋ−ａｈｅａｄ）を利用してリアルタイムＭＰＥＧビデオコーディングを誘発するシステムおよび方法を開示している。システムは、２つのビデオエンコーダで構成され、エンコーダのうちの１つは、他のエンコーダのルックアヘッドウィンドウよりも一定の時間だけ入力を遅延させる。‘００２特許のシステムにおいて、ビデオエンコーダのうち１つがバッファ（ルックアヘッド）デバイスとして動作して入力されるビデオフレームを遅延させ、情報コレクタ（ｃｏｌｌｅｃｔｏｒ）／プロセッサ（ｐｒｏｃｅｓｓｏｒ）としての役割を担うビデオエンコーダのうちの２つ目は、関連情報を抽出し、ビデオフレームに対するエンコード戦略を決めるためにかかる時間を有するであろう。その戦略が決まれば、コーディングパラメータは、実行のためにエンコーダデバイスに伝達される。‘００２特許の技術には、少なくとも、ライブストリーミングアプリケーションでレンダリングされたビデオのエンコードフレームの費用を計算し、ゲーミング（ｇａｍｉｎｇ）アプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビットレートの制約条件内でエンコードされたビデオを最大化するためにビデオデータを使用する技術を提供するための事項は開示されていないため、本発明と比べて不足であると言える。本発明は、無制限に再使用することのできるビデオデータに対するエンコーダ設定を収集して格納するため、優れていると言える。
【０００７】
米国公開特許第ＵＳ２０１６／０１９８１６６  Ａ１号（「‘１６６公報」）は、リアルタイムエンコードのためのソリューションを提供する疑似（ｐｓｅｕｄｏ）マルチパスエンコード技術のためのシステムおよび方法を開示している。開示されたシステムは、入力されるビデオフレームがピクチャ（ｐｉｃｔｕｒｅ）のサブグループ（ｓｕｂ−ｇｒｏｕｐ）を形成するように、１番目のパスでダウンサンプリングされてエンコードされるシステムである。この後、このようなサブグループは、２番目にパスコーディングされたフレームのセットを生成するために使用されるエンコード統計（ｅｎｃｏｄｉｎｇ  ｓｔａｔｉｓｔｉｃ）の生成に使用される。‘１６６公報に記載された技術には、少なくとも、本発明がライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードするための特定の費用を計算し、このようなデータをいかなるサンプリングがなくとも、ビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術が記載されているため、本発明よりも不足であると言える。
【０００８】
米国特許第９，６９７，２８０号（「‘２８０特許」）は、正規化された情報からモバイルメディアデータ記録を生成し、セツルメント配置（ｓｅｔｔｌｅｍｅｎｔ  ａｒｒａｎｇｅｍｅｎｔ）を決定するためにモバイルメディアデータを分析し、セツルメント配置からの関連情報をモバイルメディア記録に代表された参加者（ｐａｒｔｉｃｉｐａｎｔ）のうちの少なくとも一部に提供するためのシステムおよび方法を開示している。このシステムおよび方法は、以前エンコーダの出力が次のエンコーダの入力にデージチェーン方式で連結されてエンコードされたファイルが消費する前に遅延を発生させる、マルチパスエンコードを実行する。同等に高い品質を達成しながら、順次的なエンコードと関連する待機時間を減少させるために、第１エンコーダが第２エンコーダの入力として供給されるように連続的なエンコードステージ（ｓｔａｇｅ）がパイプラインで構成され、これにより、各エンコーダでのエンコードが少ない時間だけオフセットされ、大部分のエンコードを並列で行うようにする。さらに、すべての待機時間は、読み取られた１番目のブロックから記録された１番目のブロックまでの各エンコーダの待機時間の合計に近似する。すべての待機時間は、リアルタイムマルチパスエンコードをより容易にすることができる。しかし、このセクションに記載された他の技術と同じように、‘２８０特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、このようなデータビットレート制約条件内でエンコードされたビデオを最大化するのに使用するための技術は開示されていない。
【０００９】
米国公開特許公開第ＵＳ２０１７０１５５９１０  Ａ１号（「‘９１０公報」）は、境界アーティファクト（ｂｏｕｎｄａｒｙ  ａｒｔｉｆａｃｔ）を導入せずに、メディアコンテンツのオーディオを別途のコンテンツファイルに分割するためのシステムおよび方法を開示している。‘９１０公報は、エンコーダがオリジナルコンテンツファイルをソースストリームレット（ｓｔｒｅａｍｌｅｔ）に分割し、例えば、ＴＶプログラムが終わるのを待たずに、該当の各ロー（ｒａｗ）ストリームレットに対する複数のコピー（例えば、ストリーム）の２パスエンコードを実行するシステムを開示している。このように、ウェブサーバは、ストリームレット生成システムがオリジナルコンテンツファイルのキャプチャ（ｃａｐｔｕｒｅ）を開始した直後に、インターネットを介してストリームレットをストリーミングすることができる。パブリッシャ（ｐｕｂｌｉｓｈｅｒ）から送信されたライブブロードキャスト（ｌｉｖｅ  ｂｒｏａｄｃａｓｔ）とコンテンツの可用（ａｖａｉｌａｂｉｌｉｔｙ）の間の遅延は、ホストのコンピューティング性能によって異なる。しかし、‘９１０公報には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【００１０】
米国特許第９，７７４，８４８号（「‘８４８特許」）は、ディスプレイデバイスにおけるビデオプレゼンテーション（ｖｉｄｅｏ  ｐｒｅｓｅｎｔａｔｉｏｎ）の効率および品質の両方を改善するために、ＭＰＥＧ標準のビデオエンコーダコンポーネント（ｃｏｍｐｏｎｅｎｔ）を向上させるためのシステムおよび方法を開示している。開示された技術には、ルックアヘッドプロセッシングを経て適応的ビートを割り当てることによってビデオ圧縮を実行することが記載されている。ＭＰＥＧビデオ圧縮において、与えられた個数のビデオフレーム（１５、３０、６０など）は、ピクチャのグループ（Ｇｒｏｕｐ−ｏｆ−Ｐｉｃｔｕｒｅｓ：ＧｏＰ）を形成するためにともにグループ化される。ＧｏＰ内のピクチャは、Ｉ、Ｐ、またはＢピクチャ（フレーム）にコーディングされる。各ＧｏＰに割り当てられたビートの数は、これに含まれたフレームの数に比例するように構成される。システムは、適応的ビート割り当てを可能にする統計を収集するために、リアルタイムルックアヘッドを実行する。さらに、変形された３Ｄパイプラインシェーダペイロード（３Ｄ  ｐｉｐｅｌｉｎｅ  ｓｈａｄｅｒ  ｐａｙｌｏａｄ）は、ドメインシェーダ（ｄｏｍａｉｎ  ｓｈａｄｅｒ）の場合は複数のパッチ（ｐａｔｃｈ）を処理し、ジオメトリシェーダ（ｇｅｏｍｅｔｒｙ  ｓｈａｄｅｒ）の場合はプリミティブオブジェクトインスタンスカウント（ｐｒｉｍｉｔｉｖｅ  ｏｂｊｅｃｔ  ｉｎｓｔａｎｃｅ  ｃｏｕｎｔ）が１よりも大きいときに複数のプリミティブを処理し、ピクセルシェーダ（ｐｉｘｅｌ  ｓｈａｄｅｒ）の場合は複数のトライアングル（ｔｒｉａｎｇｌｅ）を処理する。モーション推定エンジンは、ビデオデータ内のモーションの方向や大きさに敏感であるか適応的な機能をデコードして処理するのにビデオを支援するように、グラフィックスプロセッサコンポーネントによって使用される。しかし、‘８４８特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをデコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。また、‘８４８特許は、最善のアシスト（ａｓｓｉｓｔ）として作用し、本発明に開示されるような空間方式によるプレコーディングは実行していない。このように、本発明と同一のリアルタイム方式として有利なマルチパスエンコードは、複製されることができない。
【００１１】
米国特許第９，７４９，６４２号（「‘６４２特許」）は、ビデオエンコーダが１つ以上の分数サンプル［モーションベクトル（ｍｏｔｉｏｎ  ｖｅｃｔｏｒ）］ＭＶ精密度（ｐｒｅｃｉｓｉｏｎ）と定数サンプルＭＶ精密度を含む複数のＭＶ精密度の間で、ビデオのユニット（ｕｎｉｔ）に対するＭＶ精密度を決定するシステムおよび方法を開示している。ビデオエンコーダは、分数サンプルＭＶ精密度を有するＭＶ値のセットを識別した後、０の少数部分を有するＭＶ値（セット内）の普及率（ｐｒｅｖａｌｅｎｃｅ）に少なくとも部分的に基づいてユニットに対するＭＶ精密度を選択することができる。また、ビデオエンコーダは、レート歪み関数（ｒａｔｅ−ｄｉｓｔｏｒｔｉｏｎ  ａｎａｌｙｓｉｓ）を実行することができるが、ここで、レート歪み関数は、定数サンプルＭＶ精密度に向かってバイアスされる（ｂｉａｓｅｄ）。しかし、‘６４２特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【００１２】
ヨーロッパ特許第ＥＰ１８２０２８１  Ｂ１号（「‘２８１特許」）は、デュアルパス（ｄｕａｌ−ｐａｓｓ）エンコードのためのシステムおよび方法を開示している。開示される方法は、（ａ）ピクチャを受信する段階、（ｂ）第１時間にコーディングされたピクチャバッファの第１充満度（ｄｅｇｒｅｅ  ｏｆ  ｆｕｌｌｎｅｓｓ）を計算する段階、（ｃ）第２時間にコーディングされたピクチャバッファの第２充満度をリターンするように、第１充満度で動作する段階、（ｄ）一定の時間内のピクチャを格納する段階、（ｅ）該当の時間内に、ピクチャの第１複雑度を測定する段階、（ｆ）ピクチャに対する好ましいターゲットサイズをリターンするように、ピクチャの第１複雑度および第２充満度で動作する段階、および（ｇ）段階（ｄ）に続き、マルチプロセッサビデオエンコーダにピクチャおよび好ましいターゲットサイズを提供する段階を含み、第１時間は、コーディングされたピクチャバッファの正確な充満度を計算することのできる最近の時間に該当し、第２時間は第１時間後に発生する。しかし、‘２８１特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【００１３】
日本特許第ＪＰ０６１２１５１８  Ｂ２号（「‘５１８特許」）は、オリジナルビデオストリームの選択された空間部分を独立型（ｓｔａｎｄ−ａｌｏｎｅ）ビデオストリームとしてエンコードするためのシステムおよび方法を開示しており、その方法は、選択された空間部分と関連するピクチャエレメント情報を取得する段階、選択された空間部分の周辺にある前記オリジナルビデオストリームの相補的（ｃｏｍｐｌｅｍｅｎｔａｒｙ）空間部分から導き出されたエンコードヒントを取得する段階、およびエンコードヒントを使用して選択された空間部分をエンコードする段階を含む。しかし、‘５１８特許には、本発明に開示されるような、ライブストリーミングアプリケーションでレンダリングされたビデオのフレームをエンコードする費用を計算し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供し、ビデオデータをビットレート制約条件内でエンコードされたビデオを最大化することに使用するための技術は開示されていない。
【００１４】
米国公開特許第２００６／０２３０４２８号（「‘４２８公報」）は、複数のプレイヤが同時に参加することを許容するネットワークテレビゲームシステムに関するシステムおよび方法を開示している。‘４２８公報は、圧縮可能であって、ゲームに対するビデオフレームのサブセクションに対応するプレエンコードされたブロックを格納することのできるサーバを開示している。また、システムは、ゲーム内でユーザアクションに応答し、プレエンコードされたブロックを使用してゲームコンテンツを生成することができる。その後、このコンテンツは、ユーザに送信されることができる。言い換えれば、このような技術は、本発明に開示されるように、空間方式によってプレコーディングを実行せず、有利なマルチパスエンコードをリアルタイムで複製することができない。また、‘４２８公報の技術とは異なり、本発明は、システムがランタイム中に時間的シーケンス（例えば、解像度）によってフレームのすべての部分に対するパラメータを変更し、ゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供することができる。
【００１５】
米国特許第８，１５４，５５３号（「‘５５３特許」）は、命令をレンダリングするための遮断メカニズム、およびレンダリングエンジンの命令の処理、プレフィルタリングモジュールおよびビジュアルエンコーダを基盤とするフィードフォワードコントロールメカニズムを有するストリーミングゲームサーバに関するシステムおよび方法を開示している。‘５５３特許技術は、グラフィックスＡＰＩを、視覚的複雑性とシーン（ｓｃｅｎｅ）においてオブジェクトのモーションを参照して一連のオブジェクトレベルデータを抽出するのに使用する。この情報は、ＧＰＵレベルにおけるレンダリング詳細事項、ビデオプレデコーダにおけるフィルタリングレベル、およびビデオエンコーダにおける量子化レベルを制御するのに使用される。また、システムは、ビデオエンコーダのターゲットエンコードされたフレーム内の各メクロブロックに対するモーション補償推定値を計算する。本明細書に記載された他の技術と同じように、‘５５３特許に開示されるシステムは、本発明に開示されるように、時間または空間方式によってプレコーディングを実行せず、実際にビットレートピークに応答してフレームをドロップ（ｄｒｏｐ）させるため、有利なマルチパスエンコードをリアルタイムで複製することができない。さらに、‘４２８公報の技術とは異なり、本発明は、システムがゲーミングアプリケーションのためのライブストリーミングに対して十分に短い待機時間を提供することができる。
【００１６】
このような技術における最新技術に関する説明によって明らであるが、リアルタイムゲーム環境のエンコードと関連する現在のコンピュータ技術に対する改善が、本技術分野において求められている。
【発明の概要】
【発明が解決しようとする課題】
【００１７】
したがって、本発明の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステムおよび方法を開示することにある。一実施形態において、サーバは、フレームエンコードにおける変更と関連する情報をモニタリングし、公差境界（ｔｏｌｅｒａｎｃｅ  ｂｏｕｎｄａｒｙ）、ローリング（ｒｏｌｌｉｎｇ）平均フレーム時間、およびフレーム時間の短期トレンド（ｓｈｏｒｔ−ｔｅｒｍｔｒｅｎｄ）を計算し、これらの計算値をフレーム時間ピークの識別に使用する。さらに、サーバは、フレーム時間ピークのサイズに比例してフレーム出力の品質設定を変調するようにエンコーダにヒントを与える。
【００１８】
また、本発明の他の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステムおよび方法を開示することにあって、公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの計算値は、高エントロピ（ｈｉｇｈ−ｅｎｔｒｏｐｙ）フレームの識別に使用される。
【００１９】
また、本発明の他の目的は、エンコーダにヒントを与えることによって一定のビットレートを維持するシステム方法を開示することにあって、サーバは、公差境界外側のフレーム時間に対する品質スケーリング値（ｑｕａｌｉｔｙ  ｓｃａｌｉｎｇ  ｖａｌｕｅ）を計算し、この計算値をフレーム時間ピークの識別に使用する。
【００２０】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、レンダラ（ｒｅｎｄｅｒｅｒ）は、ゲーム環境における１つ以上の通しプレイ（ｐｌａｙｔｈｒｏｕｇｈ）を記録し、１つ以上の通しプレイからの複数のフレーム（ｆｒａｍｅ）をヒートマップ（ｈｅａｔｍａｐ）上の複数のセル（ｃｅｌｌ）に分類し、分類されたフレームのリストを収集する。また、エンコーダは、ヒートマップの各セルに対する平均エンコードフレームサイズ（ａｖｅｒａｇｅ  ｅｎｃｏｄｅｄ  ｆｒａｍｅ）を計算するために、分類されたフレームのリストから１つ以上のフレームをエンコードし、各平均エンコードフレームサイズをセルあたりの正規化されたエンコーダ品質設定と関連させてよい。また、エンコーダは、各セルの平均エンコードフレームサイズからヒートマップに対する平均フレームサイズを計算し、これらを、ビデオシーケンスをコーディングするためのヒントとしてゲームプレイ（ｇａｍｅｐｌａｙ）中に使用する。
【００２１】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、レンダラは、複数のフレームで構成されるビデオシーケンスを記録し、エンコーダは、ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによってビデオシーケンスをコーディングする。また、エンコーダは、エンコーダ品質設定を記録してよい。また、レンダラは、エンコーダ品質設定をビデオシーケンスの１番目のフレームによって正規化し、これらを、再生中にビデオシーケンスをコーディングするようにエンコーダにヒンドを与えるために使用してよい。
【００２２】
また、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、１つ以上のフレームがシングルパスによってエンコードされる。
【００２３】
さらに、本発明の他の目的は、エンコードのためのシステムおよび方法を開示することにあって、１つ以上の通しプレイから抽出されたデータは、複数のフレームおよびフレームそれぞれと連関するプレイヤ位置（ｐｌａｙｅｒ  ｌｏｃａｔｉｏｎ）を含む。
【００２４】
添付の図面は、後述する詳細な説明を参照することでより適切に理解することができるため、本発明の完全な理解およびこれによる多くの利点を容易に得ることができるであろう。
【図面の簡単な説明】
【００２５】
【図１】リアルタイムレンダリングされたビデオがリモートビューア（ｖｉｅｗｅｒ）でライブストリーミングされる環境を示した例示図である。
【図２】ロード推定基盤のエンコーダヒンティング段階を概略的に示したフローチャートである。
【図３】フレーム時間ピークとフレーム時間バレー（ｖａｌｌｅｙ）を検出した後、これに応じてエンコーダ設定を変更することを示した例示図である。
【図４】ライブレンダラのランタイム中に事前に生成されたエンコーダ品質設定を使用することを概略的に示したフローチャートである。
【図５】本発明の一実施形態における、ライブレンダリングされたシーケンスに対するエンコーダ品質設定を事前に生成する段階を概略的に示したフローチャートである。
【図６】本発明の一実施形態における、決定された長さのエンジン内（ｉｎ−ｅｎｇｉｎｅ）のリアルタイムカットシーン（ｃｕｔｓｃｅｎｅ）に対するエンコーダ品質設定の事前生成中に生成されるデータを示した例示図である。
【図７】本発明の実施形態における、空間関連シーケンスに対するエンコーダ品質設定を事前生成することを示した例示図である。
【図８】本発明の実施形態における、正規化されたエンコーダ品質設定が抽出されるヒートマップを示した例示図である。
【発明を実施するための形態】
【００２６】
図面に示す発明の好ましい実施形態を説明するにあたり、明確化のために、特定の用語に依存することがある。しかし、本発明は、このように選択された特定の用語に限定されることを意図しておらず、それぞれの特定の用語は、類似の目的を達成するために類似の方式で作動するすべての技術的等価物を含むものと理解されなければならない。本発明の好ましい実施形態は、例示の目的として記載されているが、本発明は、図面に具体的に示されていない他の形態によっても実現可能であることが理解されなければならない。
【００２７】
１秒あたり６０フレームで実行されるライブストリーミングビデオゲームの一般的な動作の間、エンコーダは、モーションベクトルと残差を計算する。ビデオフレームが新たなビデオ情報によって以前のフレームとは大きく異なるとき、エンコーダによって計算された残差は正常よりも大きくなるはずであり、ネットワーク帯域幅使用量の急増（ｓｐｉｋｅ）を引き起こす原因となる。エンコーダは、このようなビットレートスパイク（ｓｐｉｋｅ）のようなファクタ（ｆａｃｔｏｒ）に応答してライブストリーミング中にエンコーダ設定を適応させるようになるが、その設定は反応的に調節されるだけである。
【００２８】
ビデオフレームがリアルタイムにレンダリングされる場合に、エンコーダは、ビットレート制約条件に対して可能な限り最高の品質を維持しようとするために、エンコード設定を優先的に適応させることに留意する。選択されたエンコーダ設定を無視するための設定を提供するプロセスは、ヒンティング（ｈｉｎｔｉｎｇ）と呼ばれる。レンダラは、エンコードされる前のフレームに関する情報を有しているため、適切なエンコーダ設定の選択に適しており、したがってエンコーダにヒントを与えなければならない。入ってきたフレームが高いエントロピイメージであるとき、入ってくるフレームが以前のフレームと関連がないとき、または大きな残差、品質低下、またはビットレートスパイクを引き起こし得るという他の理由により、レンダラはエンコーダにヒントを与えるようになる。
【００２９】
図１は、リアルタイムレンダリングされたビデオがリモートビューアでライブストリーミングされる環境を示した例示図である。サーバ１００は、リアルタイムレンダリングプロセス１０２（本明細書では「レンダラ」とも呼ばれる）およびストリーミングコーデック１０４（本文書では「エンコーダ」とも呼ばれる）を同時に実行することのできるハードウェアで構成されてよい。サーバ１００は、後述するように、遠隔測定法（ｔｅｌｅｍｅｔｒｙ）を実行する１つ以上の遠隔測定サーバ１０５を含む１つ以上のハードウェアデバイスで構成されてよい。サーバ１００と遠隔測定サーバ１０５は、レンダリングプロセス１０２とコーデック１０４に対してローカルまたは遠隔であってよい。また、コーデック１０４は、直接的なレポーティングまたは本技術分野に周知の他のモニタリングプロセスを経ることで、レンダリングプロセス１０２にエンコーダ品質設定を再通信しなければならない。エンコードされたビデオストリームは、クライアント１０６デバイスにネットワークを介して送信される。クライアント１０６は、ビデオストリームをデコードしてディスプレイすることのできるハードウェアで構成されてよい。
【００３０】
図２は、ロード推定基盤のエンコーダヒンティングの段階を概略的に示したフローチャートである。「イベントモニタリング」段階２００で、レンダラがビデオを生成する間、レンダリングプロセスまたは他のサーバ側のプロセスは、フレームがエンコードされるのに必要な方法を変更する情報をモニタリングしなければならない。これには、該当のフレーム内でレンダラに対してなされたドローコール（ｄｒａｗ  ｃａｌｌ）の数、フレーム内で第１時間に現れるピクセルの数を基盤とするエンコードされた残差のサイズ計算を試みるための情報、またはレンダリング性能をエンコーダ性能と連関させるために試みる他の複数の情報が含まれてよい。モニタリングされた情報は、ランタイムレンダリングプロセス中に発生する、いずれかのメッセージ、計算結果、成果（ｏｕｔｃｏｍｅ）、または個別に測定可能な値を含んでよい。エンコードされたフレームサイズが以前のフレームのエンコードされたフレームサイズと大きく異なることを示すことにより、情報が読み取られるときには、このような情報はイベントと呼ばれる。
【００３１】
イベントは、図３を参照しながら説明するように、レンダラで始まってよく、レンダリングプロセスにおいて、ピーク検出モニタリングの一例としては、非正常的に（ｕｎｕｓｕａｌｌｙ）長いか非正常的に短いフレーム時間を検出するために各フレームのレンダリング時間をモニタリングする。このような場合、非正常的なフレームレンダリング時間は、イベントと見なされる。
【００３２】
「現在フレームに対するエンコーダ品質設定の準備」段階２０２で、レンダラがイベントを受信するとき、エンコーダにヒントを与えるための目的として、レンダラで求められる複数の追加の計算があってよい。このような計算は、以前の段階のイベントモニタリング中に測定された情報を修正することを含んでよい。また、「それぞれのエンコードされたフレームに対するエンコーダ設定のレポーティング」段階２０４において、このような計算は、各フレームでエンコーダによってレンダラにレポーティングされるランタイムエンコーダ品質設定を修正することを含んでよく、必要によっては利用可能でなければならない。「準備されたエンコーダ設定によってエンコーダにヒンティング」段階２０６で、生成されたエンコーダ品質設定がレンダラからエンコーダに送信される。レンダラは、以後のフレームに対するイベントなどをモニタリングし続けるであろう。
【００３３】
図３において、フレームでレンダリングに非正常的に長い時間がかかれば、レンダラは、このフレーム時間ピークのサイズに比例して品質設定を減少させるようにエンコーダにヒントを与えるであろう。エンコーダ品質設定値を準備するために、レンダラは、現在のフレームからの測定されたフレーム時間、複数の以前フレームからの測定されたフレーム時間、およびエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用するであろう。このような計算値は、図３を参照しながら詳しく説明する。
【００３４】
また、サーバで実行される他のプロセスは、エンコーダ設定にヒントを与えるために使用されるフレーム情報へのアクセス（ａｃｃｅｓｓ）を有してよい。例えば、レンダラを含むゲームエンジンは、エンコーダ品質設定を減少させるために、ゲームによってトリガーされる（ｔｒｉｇｇｅｒｅｄ）視覚的効果によってエンコードされたビデオ帯域幅に測定されたインパクト（ｍｅａｓｕｒｅｄ  ｉｍｐａｃｔ）を使用してよい。与えられた視覚的効果の追加のエンコード費用に関する情報を収集するために、開発者は、多様なエンコーダ品質設定によってエンコードするとき、効果を適用し、ビットレートにおける増加を測定する必要がある。このような測定は、視覚的効果を含むフレームに対するエンコードされたフレームサイズが視覚的効果を含まない以前のフレームとほぼ同一のエンコードされたフレームサイズである品質を選択するのに使用されてよい。視覚的効果のために選択された品質設定とデフォルト（ｄｅｆａｕｌｔ）品質設定との差は、設定デルタ（ｓｅｔｔｉｎｇｓ  ｄｅｌｔａ）と呼ばれる。エンコーダは、選択された品質を使用するようにヒントを与えるか、測定された設定デルタ分だけ現在の品質を減少させるようにヒントを与えてよい。その結果は、視覚的効果イベントをルックアップテーブルまたは他のタイプのインデックスされた（ｉｎｄｅｘｅｄ）配列のような関連するエンコーダヒントに容易に変換することのできるフォーマット（ｆｏｒｍａｔ）に格納されなければならない。
図３は、フレーム時間ピークとフレーム時間バレー（ｖａｌｌｅｙ）を検出した後、これに応じてエンコーダ設定を変更することを示した例示図である。このような例では、ビデオストリームのビットレートに対する影響を推定するために、レンダリング時間とイメージエントロピとの相関度を使用する。フレームが多くの新たな視覚的情報、すなわち、第１時間内のフレームに寄与する追加のエレメントを含めば、以前フレームと比べるときに、フレームをレンダリングするのにより多くの時間がかかるようになる。例えば、フレームが以前フレームとほぼ同一の時間でレンダリングされれば、環境に大きな変更はなかったと見なされる。このような暗示的相関度（ｉｍｐｌｉｅｄ  ｃｏｒｒｅｌａｔｉｏｎ）は、特に１人称ゲーム／エンジンで明確である。レンダリングされたフレーム時間が急に長くなれば、環境内に何かが新たに導入されたことを意味する。また、エンコーダは、スクリーンを覆う急な爆発効果またはスクリーンの急なジオメトリ（ｇｅｏｍｅｔｒｙ）のような新たなビデオ情報によって困難を感じるはずである。これと同様に、フレームの多くの新たな情報がエンコーダによって計算された残差のサイズを増加させるはずである。したがって、レンダリングピーク時間をモニタリングすることは、高エントロピイメージがビデオストリームのビットレートにスパイクを引き起こす前に、高エントロピイメージを含むフレームを識別することに繋がるであろう。
【００３５】
ローリング平均（ｒｏｌｌｉｎｇ  ａｖｅｒａｇｅ）は、長期トレンド（ｌｏｎｇ−ｔｅｒｍ  ｔｒｅｎｄ）を考慮しながら、短期異常値（ｏｕｔｌｉｅｒ）を識別するための信号処理および統計分析に使用される。ローリング平均は、特定の個数の以前のデータポイント（ｐｏｉｎｔ）の算術平均を求めることによって計算される。ローリング平均の計算に使用される以前のデータポイントのセットは、ローリングウィンドウ（ｒｏｌｌｉｎｇ  ｗｉｎｄｏｗ）と呼ばれる。ライブレンダリングの場合、ローリング平均フレーム時間から逸脱したフレーム時間を識別することにより、高エントロピフレームを識別することができる。このような例におけるローリング平均フレーム時間３００は、以前のローリングウィンドウに対する平均フレーム時間である。すなわち、フレーム時間がローリングウィンドウ内の各フレームに対して合算された後、その合計がローリングウィンドウ内のフレームの数によって割られる。ローリングウィンドウのサイズは、一般的なデータトレンドを調査するためにランタイムプロファイリング中に測定された長期フレーム時間トレンド（ｌｏｎｇ−ｔｅｒｍ  ｆｒａｍｅ−ｔｉｍｅ  ｔｒｅｎｄ）の一般的な周波数に基づいてチューニングされてよい。１０個のフレームのローリングウィンドウサイズの例において、平均フレーム時間は、以前の１０個フレーム時間を基盤として計算されるであろう。ローパスフィルタフィルタ（ｌｏｗ−ｐａｓｓ  ｆｉｌｔｅｒ）の副作用として、ローリングウィンドウが小さすぎると、ピーク検出において必要なものよりも多くの誤検出（ｆａｌｓｅ−ｐｏｓｉｔｉｖｅ）が生じることがある。実際に、より長いフレーム時間がレンダラで頻繁に発生する長期的な行動パターンとして説明されるとき、フレームは「例外的な忙しさ（ｅｘｃｅｐｔｉｏｎａｌｌｙ  ｂｕｓｙ）」に分類される。ローリング平均フレーム時間３００は、上限公差３０２と下限公差３０４を伴う。公差は、フレーム時間で引抜的な短期トレンドを識別するためにチューニングされてよい。１秒あたり６０フレームで実行されるリアルタイムレンダラに対し、±１ｍｓまたは約６．２５％の公差で十分であってよい。フレーム時間は、どのエンコーダヒンティングもトリガーすることなく、ローリング平均フレーム時間の公差内で変更されてよい。適切なウィンドウサイズと公差値を求めることは、フレーム時間で一般的なトレンドを決定するために複数のランタイムプロファイリングを要求することがある。例えば、１秒あたり１００フレームで実行されるゲームは、他のフレームごとにシャドウ（ｓｈａｄｏｗ）だけをアップデートし、１０％よりも大きい公差を要求することがある。これとは反対に、ゲームは、０．５ｍｓに過ぎない最も厳密な視覚的効果であって、３３ｍｓの極めて安定的なフレーム時間で１秒あたり３０フレームによって円滑に実行され、公差は１．５％と低い。
【００３６】
現在フレームに対するフレーム時間は、ローリング平均フレーム時間と比較される。現在のフレーム時間が公差境界の外側にあれば、品質はエンコーダで調節される。隣接するかほぼ隣接するフレーム間のフレーム時間における一般的な変更（短期トレンド）および特定のウィンドウにわたるフレーム時間の変化（例えば、周期的に繰り返されるパターンまたは他の長期トレンド）を調査するために、公差境界がプロファイリングと呼ばれるプロセスを利用してフレーム時間を測定することで計算されてよい。さらに、高エントロピ／ビジーモーメント（ｍｏｍｅｎｔ）の間には、エンコーダヒンティングがトリガーされるまでローリングウィンドウサイズおよび公差が調節されてよいが、プレイヤが周辺を歩き回って環境を探険する瞬間はそうでないことがある。「フレーム２」３０６の例のように、フレーム時間が上限公差３０２を超過すれば、エンコード品質は減少されるであろう。「フレーム５」３０８の例のように、フレーム時間が下限公差３０４未満であれば、エンコーダ品質は増加するであろう。特定の実施形態において、フレーム時間が公差以下に低下するたびに、エンコード品質が最大容量まで再増加されてよい。また、実施形態によって、システムは、品質を低めるために使用されるものと類似のスケーリング方法を利用することで、品質がさらに遅くバックアップされるようにスケーリングするように選択してもよい。
【００３７】
ヒンティング方法の一例として、上限３１０および下限３１２品質設定の間で品質をスケーリングしてよい。例えば、上限はデフォルト品質設定であってよく、下限はデフォルト品質の５０％のような一部の割合であってよい。フレーム時間ピークが公差を超過して低下すれば、品質設定は、公差を超過するフレーム時間ピークのサイズに基づいて上限と下限の間で線形的にスケーリングされる。フレーム時間が公差未満に低下すれば、品質設定は上限値に戻ってよい。
【００３８】
公差外のフレーム時間に対する品質スケーリング値を計算するために、フレーム時間は、下記の数式（１）に示すように、ローリング平均フレーム時間に対して正規化されなければならない。
【００３９】
【数１】
2020110608.tif 000003
【００４０】
正規化された時間から１を引くことにより、ローリング平均フレーム時間からのフレームの偏差をもたらす。偏差を公差で割った後に１を引くことにより、スケーリング値を提供する。このようなスケーリング値は、０と１の間で維持されるように固定されなければならない。以下の数式（２）に示すように、すべての陰のスケーリング値は、０にクランプ（ｃｌａｍｐｅｄ）されなければならず、１を超過するすべての値は１にクランプされなければならない。
【００４１】
【数２】
2020110608.tif 000004
【００４２】
クランプされたスケーリング値は、上限品質設定と下限品質設定の間を補間する（ｉｎｔｅｒｐｏｌａｔｅ）のに使用されてよい。以下の数式（３）に示すように、クランプされたエンスケーリング値０は上限品質を示し、クランプされたスケーリング値１は下限品質を示す。
【００４３】
スケーリングされた品質設定＝最大−（スケーリング値×（最大−最小））・・・（３）
【００４４】
一例として、ローリング平均が１５ｍｓであるとき、「フレーム２」３０６が１６ｍｓかかれば、結果的にクランプされたスケーリング値は０．０２５または２．５％である。上限品質値がデフォルト品質設定であり、下限がデフォルト品質の５０％であれば、このフレームに対するスケーリングされた品質設定はデフォルト品質の９８．７５％となるはずである。
【００４５】
ローリング平均が１５．２５ｍｓであるとき、「フレーム５」３０８が１４．２５ｍｓかかれば、フレーム時間は公差未満となり、スケーリング値は０にクランプされる。スケーリングされた品質設定は、上限品質設定に設定されるであろう。
【００４６】
図４の段階４０６に示すように、集合された（ａｇｇｒｅｇａｔｅｄ）エンコーダ品質設定値をヒンティングのためにエンコーダに送信する前に、図４の段階４００に示すように、準備段階からの準備されたエンコーダ品質設定を結合することによって複数のエンコーダヒンティング方法が階層化（ｌａｙｅｒｅｄ）されてよい。一実施形態において、すべてのソース（ｓｏｕｒｃｅ）からの寄与を同一に含む単一値を生成するために、準備されたエンコーダ品質設定の算術平均が求められてよい。他の実施形態において、加重（ｗｅｉｇｈｔｅｄ）算術平均は、エンコーダヒンティングのためのエンコーダ品質設定値に寄与することのできる各ソースに加重値を割り当てることによって計算されてよい。割り当てられた加重値は、１つの寄与するソースを他のものよりも強く評価するのに使用されてよい。例えば、フレームタイムピークイベントからの寄与は、単一視覚効果イベントからの寄与と比べるとき、エンコードされたビットレートにおける変更に対してより強い相関度を有することがあるため、フレームタイムピークイベントからの寄与をより高く評価することが好ましい場合がある。加重算術平均は、以下の数式（４）に示すように標準定義を利用して計算されてよいが、ここで、ｉ＝１は、ｎ個の品質設定のセットにおいて１番目の数字を示す。数学的セットのインデックスは、０から始まるプログラミングインデックスとは異なり、１から始まる。
【００４７】
【数３】
2020110608.tif 000005
【００４８】
図４は、ライブレンダラのランタイム中に事前生成されたエンコーダ品質設定を使用することを概略的に示したフローチャートである。「ゲームシーケンスモニタリング」段階４００で、レンダラは、あるセットの事前生成されたエンコーダ品質設定のセットを有するシーケンスをモニタリングしなければならない。このようなシーケンスは、エンジン内のリアルタイムカットシーンのようなフレームの時間的に予測可能なシーケンス、またはプレイヤの位置が知られたときにランタイム中に時系列に変換可能な空間的に予測可能なシーケンスを含んでよい。時間的に予測可能なシーケンスは、すべてのフレームが隣接したものと複数の知られた関係を有するフレームのシーケンスである。すなわち、フレームのシーケンスは、一定の長さ、一定の順序のものであれば時間的に予測可能であり、ある２つの隣接するフレームは、ピクセルデータおよびモーションデータで一貫した関係を有する。空間的に予測可能なシーケンスは、レンダラのランタイム中に仮想空間がトラバース（ｔｒａｖｅｒｓｅｄ）されるときに構成される時間的シーケンスに対して推論を生成するのに使用される２つの隣接した仮想位置間の複数の関係を提供する。すなわち、仮想カメラが２つの仮想位置を移動するとき、仮想空間における２つの位置が時間的に予測可能なシーケンスを生成する場合、仮想空間における２つの位置は空間的に関連する。例えば、ビデオゲームにおいて、２つの位置の移動がピクセルデータおよびモーションデータがある程度一致するビデオを生成する場合、２つの隣接する位置は時間的に関連する。これは、一般的に、プレイヤを取り囲む環境と背景は、プレイヤがレベルを通過するときに固定された位置でレンダリングされるため、ビデオゲームで大部分の３Ｄレベルに該当する。
【００４９】
エンコーダ品質設定の事前生成については、図５を参照しながら詳しく説明する。事前生成されたエンコーダ品質設定は、ルックアップテーブルやヒートマップのようなランタイムで読み取り可能なフォーマットとしてサーバのディスク（ｄｉｓｋ）に格納される。「ゲームシーケンスに対する事前生成されたエンコーダ設定の探索」段階６０２で、シーケンスの開始が検出されるとき、検出されたゲームシーケンスに対する事前生成されたエンコーダ品質設定が読み取られて準備される。エンコーダ品質設定が格納前に正規化された場合、エンコーダ品質設定が準備される必要がある。準備は、正規化されたエンコーダ品質設定に、ランタイムエンコーダ品質設定、ターゲット（ｔａｒｇｅｔ）エンコーダ品質設定、または複数の他のソースからのエンコーダ品質設定を掛けたものとして含まれてよい。特定の実施形態において、イベントの検出は、シーケンスそれぞれに対する事前生成されたエンコーダ品質設定であってよい。他の実施形態において、それぞれのカットシーンが、設定が存在するシーケンスのリストにあるか否かの決定を始めるときに、ランタイムでチェック（ｃｈｅｃｋ）が実行されてよい。事前生成されたエンコーダ品質設定が格納前に正規化されれば、エンコーダ品質設定を準備するために乗算段階があるであろう。図６を参照しながら説明する例において、エンコーダ品質設定は、エンジン内のリアルタイムカットシーンでフレームに対して生成され、シーケンスの１番目のフレームとして正規化される。このような正規化された時間シリーズ（ｔｉｍｅ  ｓｅｒｉｅｓ）の場合、正規化された値にシーケンスの１番目のフレームに対するランタイムエンコーダ品質設定を掛けたものにより、エンコーダ品質設定が準備される必要があるであろう。「それぞれのエンコードされたフレームに対するエンコーダ設定のレポーティング」段階６０４で、エンコーダ品質設定は、各フレームでエンコーダによってレポーティングされ、必要によっては利用可能でなければならない。図７を参照しながら説明した例において、エンコーダ品質設定は、マップ（ｍａｐ）の各位置に対して生成され、全体マップの平均エンコーダ品質設定によって正規化される。このような正規化された空間シリーズ（ｓｐａｔｉａｌ  ｓｅｒｉｅｓ）の場合、正規化された値にシーケンスの１番目のフレームに対するランタイムエンコーダ品質設定を掛けたものにより、エンコーダ品質設定の準備する必要があるはずである。
【００５０】
「事前生成されたエンコーダ設定でエンコーダにヒントを与える」段階６０６で、エンコーダ品質設定は、シーケンスの各フレームに対してエンコーダに送信されるであろう。エンコーダは、次のフレームをエンコードするために、レンダラから送信されたエンコーダ品質設定を使用するであろう。レンダラは、シーケンスが完了するまで、事前生成されたエンコーダ品質設定を準備し、各フレームでエンコーダにヒントを与え続けるであろう。シーケンスが終了するとき、レンダラは、次のシーケンスをモニタリングし続けるであろう。図６を参照しながら説明したエンジン内のリアルタイムカットシーンの例に対し、エンコーダは、カットシーンが終わるまで、カットシーンの各フレームに対してヒントを受けるであろう。図５を参照しながら説明したヒートマップ方法の例に対し、エンコーダは、プレイヤがヒートマップによって定義された領域の境界内にある全体持続時間の間、ヒントを受けるであろう。
【００５１】
図５は、ライブレンダリングされたシーケンスに対するエンコーダ品質設定を事前生成する段階を概略的に示したフローチャートである。エンコーダ品質設定は予測可能であり、測定可能な時間的または空間的コンポーネント（ｃｏｍｐｏｎｅｎｔ）を有するシーケンスに対して事前生成されてよい。シーケンスは、プレイヤキャラクタ（ｐｌａｙｅｒ  ｃｈａｒａｃｔｅｒ）によって現在着用されている鎧（ａｒｍｏｒ）を、レンダリングするエンジン内のリアルタイムカットシーンまたはイベントなどが進行される間に、プレイヤが動いたり辺りを見回したりできるように許容するワールド内（ｉｎ−ｗｏｒｌｄ）のカットシーンのような予測することのできない部分を有することがある。エンジン内のリアルタイムカットシーンのような時間シリーズにおける隣接フレーム（ａｄｊａｃｅｎｔ−ｆｒａｍｅ）関係、またはビデオゲームレベルでトラバース可能な領域のようなフレームシーケンスを生成するようにランタイム中に使用される仮想空間における隣接位置関係を探索することにより、予測可能な部分を有するシーケンスが識別されなければならない。「シーケンス選択」段階５００では、このようなシーケンスが識別されなければならない。
「シーケンスに対するエンコーダ設定の生成」段階５０２で、エンコーダにおいて、エンコーダ品質設定は、一定のビットレートを維持することを目標に、シーケンスに対して生成されなければならない。エンジン内のリアルタイムカットシーンエンコーダ品質設定は、カットシーンのビデオを記録してマルチパスエンコードモードでビデオをエンコードすることによって計算されてよい。マルチパスエンコードは、１番目のフレームをエンコードし、エンコードされた１番目のフレームのサイズをすべての後続フレームを制限するのに使用する。各フレームがエンコードされるとき、エンコードされたサイズは、１番目のフレームのエンコードされたサイズと比較され、品質設定は、エンコードされたフレームサイズがサイズに近づくまで現在フレームに対して調節される。特定の実施形態において、フレームのシーケンスは、マルチパスエンコードモードで固定された数にエンコードされてよい。他の実施形態において、シーケンスは、フレームあたりのサイズが値に定着し、最終エンコードパスと最終から２番目のエンコードパスとの間で変更がなくなるまで、マルチパスエンコードモードで連続的なパスによって供給されてよい。エンコーダ品質設定は、結果のエンコードされたビデオから生成されるか抽出されるとき、記録されてよい。生成されたエンコーダ品質設定は、与えられたシーケンス内の帯域幅の均衡を維持するためにランタイム中に使用されるはずであり、これにより、ビットレートピークおよびディップ（ｄｉｐ）を防ぐであろう。プレレンダリングされたカットシーンのビデオをプレエンコードして再生のために格納するものとは異なり、このような方式によってエンコーダ品質設定を生成することは、事前生成された品質設定によって提供された帯域幅均等化（ｅｑｕａｌｉｚａｔｉｏｎ）の利点を維持しつつも、エンジン内のリアルタイムカットシーンがカスタマイズ形式のプレイヤの鎧（ａｒｍｏｒ）、武器（ｗｅａｐｏｎ）、または他のコスメアイテム（ｃｏｎｓｍｅｔｉｃ  ｉｔｅｍ）のようなコンテキスト基盤のコンテンツを含むように許容するであろう。
【００５２】
類似のプロセスが空間関連シーケンスに対するエンコーダ設定を生成するために、複数回が繰り返されてよい。プロセスについては、図７を参照しながら説明するデータフローを参照しながらより詳しく説明する。
【００５３】
エンジン内のリアルタイムカットシーンに対し、各フレームに対するエンコーダ品質設定は、シーケンス内の１番目のフレームのエンコーダ品質設定値で割られることによって正規化されなければならない。これは、プレイヤの鎧またはコスメアイテムのようなシーケンスの動的エレメントがランタイムで準備された最終エンコーダ品質設定に現われるようにする。ヒートマップに格納される空間関連シーケンスに対し、各エンコーダ品質設定は、各エンコーダ品質設定をマップワイド（ｍａｐ−ｗｉｄｅ）平均エンコーダ品質設定で割ることにより、ヒートマップとして定義された全体領域にわたって平均エンコーダ品質設定で正規化されなければならない。ヒートマップの例は、図８に示すとおりである。「シーケンスの各フレームに対するエンコーダ品質設定の正規化および格納」段階５０４で、レンダリングプロセスで生成された正規化されたエンコーダ値は、各フレームに対するエンコーダ品質設定のリストまたはマップの各位置に対してエンコーダ品質設定を定義するヒートマップのような適切なランタイム読み取り可能なフォーマットとして構造化され、格納される。
【００５４】
図６は、決定された長さのエンジン内（ｉｎ−ｅｎｇｉｎｅ）のリアルタイムカットシーン（ｃｕｔｓｃｅｎｅ）に対するエンコーダ品質設定を事前生成する間、データがどのように生成されるかを示した例示図である。プレレンダリングされたカットシーンのようなエンジン内のリアルタイムカットシーンは、他のライブレンダリングされたビデオ出力を生成するのに使用される同一のレンダリングエンジンを使用してランタイム中に生成される。また、エンジン内のリアルタイムカットシーンは、プレイヤによって着用されたコスメアイテム、プレイヤのグループ内の非プレイヤ（ｎｏｎ−ｐｌａｙｅｒ）キャラクタのようなゲーム状態、またはプレイヤの選択によって制御される他のゲーム状態に対する状況（ｃｏｎｔｅｘｔｕａｌ）情報を含んでよい。エンジン内のリアルタイムカットシーンは、プレレンダリングされたカットシーンよりも品質が低かったが、ライブレンダリングされた視覚的忠実度がプレレンダリングされた視覚的忠実度に近づくことにより、エンジン内のリアルタイムカットシーンはより一般化されている。また、ゲームディスクがプレレンダリングされたカットシーンの多様なバージョンを含まないように、言語オプション、解像度オプション、およびキャラクタカスタマイズ型オプションのような複数のオプションがカットシーンのビデオ出力に影響を与えることのできるエンジン内のリアルタイムカットシーンが一般的に使用される。
【００５５】
このような例において、１秒あたり６０フレームで実行されるゲームのために、約８秒の長さの４８０フレームの長さのエンジン内のリアルタイムカットシーンが選択される。このようなカットシーンは、すべてのプレイヤのための同一の一連のイベントなどを再生するであろう。カットシーンビデオは、レンダラで記録され、記録されたシーケンス６００に一連の４８０フレームを生成する。記録されたシーケンス６００は、マルチパスエンコードモードを使用してエンコードされる。記録されたシーケンスの各フレームをエンコードする間、マルチパスエンコードプロセスは、エンコードされたフレームサイズが１番目のフレームのエンコードされたサイズに近づくようにエンコーダ品質設定を変更するであろう。シーケンスの１番目のフレームは、全体のエンコードされたシーケンスにわたって一定のビットレートを保障するために、フレームサイズレファレンス（ｒｅｆｅｒｅｎｃｅ）として使用される。
【００５６】
マルチパスエンコーダ品質設定６０２は、エンコーダにおけるエンコードプロセスの間に記録されるか、エンコーダによって生成されるエンコードされた結果から抽出される。エンコーダ品質設定は、順序化されたフロート（ｆｌｏａｔ）のリストである。フロートあたりの４バイトにおいて、全体の順序化されたフロートのリストは、１，９２０バイトのデータのみを消費する。小さなファイルサイズは、ライブレンダラがランタイム中にメモリに事前生成されたエンコーダ設定の複数のセットを格納するように許容し、メモリ制約条件によって実行しなくても、すべてのゲームシーケンスに対して本明細書に説明された、プロセスを実行することの有利な結果をもたらすことができる。
【００５７】
レンダラにおいて、エンコーダ品質設定は、以下の数式（５）に示すように、１番目のフレームによって正規化される。
【００５８】
【数４】
2020110608.tif 000006
【００５９】
正規化されたエンコーダ品質設定６０４は、好ましくはエンコーダにおいて、順序化されたフロートのリストに格納される。
【００６０】
カットシーンがランタイム中にプレイを始めるとき、順序化された正規化された品質設定６０４のリストが読み取られる。正規化された品質設定は、エンコーダによってレンダリングエンジンにレポーティングされたように、シーケンスの１番目のフレームに対してランタイムエンコーダ品質設定に掛けられた後、カットシーンの各後続フレームに対してエンコーダにヒントを与えるのに使用される。特定の実施形態において、一定割合ファクタ（ｃｏｎｓｔａｎｔ  ｒａｔｅ  ｆａｃｔｏｒ：ＣＲＦ）モードで実行されるＨ．２６４標準互換ライブラリｆｆｍｐｅｇは、−ｃｒｆスイッチを利用して命令ライン（ｃｏｍｍａｎｄ  ｌｉｎｅ）のオーバーライド（ｏｖｅｒｒｉｄｅ）量子化パラメータ値を収容するであろう。
【００６１】
エンコーダ品質設定を正規化することは、事前生成されたエンコーダ品質設定が複数の他のコンテキストでカットシーンのランタイム再生中に使用されるように許容する。例えば、正規化されたエンコーダ設定６０４をシーケンスの１番目のフレームに対してエンコーダによってレポーティングされたランタイムエンコーダ品質設定に掛けることは、プレイヤが着用するために選択したカスタマイズ可能のプレイヤの鎧とは関係なく、全体カットシーンに対して一定のビットレートを生成する。これと同様に、方法は、エンジン内のリアルタイムカットシーンが再生される、スクリーン解像度のような、他のレンダリング設定を説明する。
【００６２】
図７は、プレイヤがビデオゲームの仮想空間を通過するとき、ランタイムで生成されたシーケンスのような空間関連シーケンスに対するエンコーダ品質設定の事前生成を示した例示図である。ビデオゲームにおいて、プレイヤ位置は、プレイヤのビューがエンコードされたビデオストリームのビットレートに不均衡的に大きな影響を与えるため、一般的に出力されるビデオのイメージエントロピと相関関係がある。このような相関度は、オープン（ｏｐｅｎ）領域でキャプチャされたビデオと狭い（ｔｉｇｈｔ）領域でキャプチャされたビデオの間でエンコードされたビデオビットレートを比べるときに、最も明確となる。野外領域のようなオープン領域は高い平均ビットレートでビデオを生成する反面、廊下のような狭い領域は低い平均ビットレートでビデオを生成する。このような関係は、野外領域は、植物のアンビエントアニメーション（ａｍｂｉｅｎｔ  ａｎｉｍａｔｉｏｎ）のような競争モーションが多くの不均一で広大な領域である傾向にある反面、室内領域は、凝集力のあるモーションベクトルと小さな残差（ｒｅｓｉｄｕａｌ）を生成する静的な構成のジオメトリで構成される傾向にあるため、発生する。
【００６３】
マップはグリッド（ｇｒｉｄ）によって分割されてよく、エンコーダ品質設定は、図５に示すように、正規化されたエンコーダ品質設定のヒートマップを形成するようにマップの各セルに対して事前生成されてよい。与えられたプレイヤ位置に対する一般的なエンコードされたビデオビットレートは、複数の実際の通しプレイ（ｐｌａｙｔｈｒｏｕｇｈ）を使用し、手順的に生成された通しプレイによって記録されてよい。実際のプレイヤは予測することができないため、プレイヤが仮想空間を通過する方式を正確にキャプチャする通しプレイを手順的に生成することは不可能である。手順的な通しプレイは、全体マップのカバレージを迅速に生成するために予測される通過経路に対して生成されてよいが、実際のプレイヤによって発見されることのある予測できない通過経路は見逃す場合がある。各アクセスは、短所を有するであろう。実際に遠隔測定の追跡には相当に多くの時間がかかるが、手順的に生成されたデータは、実際のプレイ経験を正確に反映しないこともある。特定の実施形態において、２つの記録の結合が、より正確なヒートマップの提供に使用されてよい。
【００６４】
記録されたビデオは、図６の記録されたシーケンス６００で示すようなビデオフレームを含まなければならず、さらに各フレームに対するプレイヤ位置を設定するであろう。プレイヤ位置は、３Ｄ空間内にあるか、トップダウン（ｔｏｐ−ｄｏｗｎ）マップで表現されるような水平な２Ｄ平面として単純化されてよい。２つの例示的に記録された通しプレイ、すなわち、段階７００において「第１記録された通しプレイ」で示された第１記録通しプレイ、および段階７０２において「第２記録された通しプレイ」で示された第２記録された通しプレイの部分が、図７を参照しながら説明した方法に示されている。ビデオフレームは、プレイヤ位置によってキャプチャされる。キャプチャされた通しプレイの各ビデオフレームは、位置によって適切なセルに分類される。このような例において、第１記録された通しプレイからのフレーム４は、段階７００の「第１記録された通しプレイ」で表現され、第２記録された通しプレイからのフレーム２は、段階７０２の「第２記録された通しプレイ」で表現される。「ヒートマップ」段階７０４で両方ともが、段階７０６で「セルＢ６」にセルＢ６に分類される。このような例示的なセルは相当に大きいため、図８に示すような例示的なヒートマップは、より大きな解像度のためにより小さなセルを有するヒートマップを示す。
【００６５】
手順的に生成された通しプレイと実際の通しプレイは、両方ともレンダラで生成されて記録されてよい。結果の通しプレイ記録は、中央のレンダラ位置で収集されてよい。複数の通しプレイが収集されるとき、ヒートマップの各セルは、セル内の位置に記録された複数のフレームを有してよい。遠隔測定サーバ１０５は、このようなデータを収集するために、デベロップメント（ｄｅｖｅｌｏｐ）中に使用されてよい。また、レンダリング／ゲームエンジンは、遠隔測定を生成し、これを中央位置に送信してよい。遠隔測定サーバ１０５は、レンダラに対してローカルまたは遠隔であってよい。また、生成された遠隔測定は、ローカルレンダリングマシンから生成された遠隔測定ファイルを手動で収集することによって収集され、中央格納所に送信されてよい。図７では、「セルＢ６フレーム」段階７０８として、セルＢ６に属するフレームのリストの開始を示している。このような空間関連フレームのリストは、より多くの通しプレイ記録が収集されるか、生成されるほど大きくなるであろう。
【００６６】
セルに属するフレームの収集は、「ターゲット品質エンコード」段階７１０に示されるターゲットエンコーダ品質設定により、ライブストリーミング中に使用されるシングルパスエンコードモードを利用してエンコードされてよい。エンコードされたフレームサイズは、セルに属する各フレームに対して生成されるであろう。図７では、「セルＢ６フレームに対するエンコードされたフレームサイズ」段階７１２に示されたセルＢ６に属するエンコードされたフレームサイズのリストの開始を示している。このようなエンコードされたフレームサイズは、セルに対する平均エンコードフレームサイズを求めるために平均化されてよい。図７では、段階７１４に示された「セルＢ６に対する平均エンコードフレームサイズ」でセルＢ６に属する平均エンコードフレームサイズを示している。各セルに対する平均エンコードフレームサイズを求めるために、ヒートマップのすべてのセルに対し、プロセスが繰り返されなければならない。平均エンコードフレームサイズは、ヒートマップのすべてのセルに対する平均フレームサイズのリストの表現として、段階７１４に示される「セルＢ６に対する平均エンコードフレームサイズ」でセルＢ６に対して表現され、段階７１６に示される「セルＢ７に対する平均エンコードフレームサイズ」としてセルＢ７に対して表現される。
【００６７】
各セルに対するすべての平均フレームサイズは、段階７１８に示された「すべてのセルに対する平均エンコードフレームサイズ」からマップワイド平均フレームサイズを求めるために平均化されなければならない。このようなマップワイド平均フレームサイズは、ターゲット帯域幅として使用されてよい。マップワイド平均よりも大きな平均エンコードフレームサイズを有するセルは、平均セルフレームサイズがマップワイド平均とほぼ同一になるまで、より低いエンコーダ品質設定に再エンコードされるであろう。これと同様に、マップワイド平均よりも小さな平均エンコードフレームサイズを有するセルは、平均セルフレームサイズがマップワイド平均とほぼ同一になるまで、より高いエンコーダ品質設定に再エンコードされるであろう。特定の実施形態において、与えられたセルに対するフレームのシーケンスは、マルチパスエンコードモードで固定された数のパスによってエンコードされてよい。他の実施形態において、シーケンスは、フレームあたりのサイズが値に定着し、最終エンコードパスと最後から２番目のエンコードパスとの間で変更されなくなるまで、マルチパスエンコードモードで連続的なパスによって供給されてよい。図７では、段階７１４におけるセルＢ６に対する平均エンコードフレームサイズは、段階７１８に示された「すべてのセルに対する平均エンコードフレームサイズ」におけるすべてのセルに対する平均エンコードフレームサイズよりも高い。「セルＢ６フレーム」段階７０８で、セルＢ６に属する空間関連フレームは、「セルＢ６に対するより低い平均エンコードフレームサイズ」段階７２４におけるセルＢ６に対する平均エンコードフレームサイズが「すべてのセルに対する平均エンコードフレームサイズ」段階７１８に示されたすべてのセルに対する平均エンコードフレームサイズとほぼ同一のサイズになるまで、「より低い品質エンコード」段階７２０で、マルチパスエンコードモードおよびターゲットフレームサイズを使用してエンコーダでオリジナル通しプレイのシーケンスのコンテキスト内で再エンコードされる。プロセスがすべてのセルに対して完了すると、セルに対するすべての平均フレームサイズは、ほぼ同一のサイズでなければならない。
【００６８】
各セルは、マップワイド平均エンコードフレームサイズと類似のサイズのセルに対する平均エンコードフレームサイズを生成するのに使用された、関連するエンコーダ品質設定を有さなければならない。セルあたりのエンコーダ品質設定は、以下の数式（６）に示すように、マップワイド平均エンコーダ品質設定によって正規化されてよい。
【００６９】
【数５】
2020110608.tif 000007
【００７０】
ビデオストリーミングの間、ゲームは、現在のプレイヤ位置に対応するヒートマップセルからの正規化されたエンコーダ品質設定をインポートし、これを、品質設定オーバーライドを送信することによってエンコーダにヒントを与えるために使用してよい。上述したように、特定の実施形態において、一定割合ファクタ（ＣＲＦ）モードで実行されるＨ．２６４標準互換ライブラリｆｆｍｐｅｇは、エンコーダにヒントを与えるために、−ｃｒｆスイッチを利用して命令ラインのオーバーライド量子化パラメータ値を収容するであろう。正規化されたエンコーダ品質設定が抽出されることのできるヒートマップの例は、図８に示すとおりである。
【００７１】
エンコーダ品質設定が正規化されることにより、これらは、図４の「ゲームシーケンスに対して事前生成されたエンコーダ設定の探索」段階４０２で説明した準備段階間、空間関連シーケンスおよび時間関連シーケンスのような複数のソース（ｓｏｕｒｃｅ）から結合されてよい。このような段階の前に、正規化された値は、各ソースシーケンスからのエンコードされたビデオビットレートに対する影響を暗示的に説明するエンコーダ品質設定を生成するためにともに掛けられてよい。例えば、プレイヤの位置は、ヒートマップから事前生成された正規化されたエンコーダ品質設定を読み取るのに使用され、プレイヤの武器（ｗｅａｐｏｎ）は、時間シリーズの事前生成された正規化されたエンコーダ品質設定をファイアリングする（ｆｉｒｉｎｇ）シーケンスを生成する。このような２つの正規化された値は、エンコードされたビデオビットレートに対するプレイヤ位置と武器選択の効果を統合するために、準備段階中にともに掛けられる。
【００７２】
上述した説明および図面は、本発明の原理を例示するためのものに過ぎない。本発明は、好ましい実施形態によって制限されるように意図されてはならず、該当の技術分野において通常の知識を有する者にとって明白である、多様な方式で実現されるであろう。本発明の多数の応用は、該当の技術分野において通常の知識を有する者によって容易に実現されるであろう。したがって、開示された特定の例示または図に示されて説明された正確な構成と動作によって本発明を制限することは好ましくない。むしろ、すべての適切な修正および均等物が、本発明の範囲内に属するものと理解されなければならない。
【００７３】
〔付記１〕
段階を含むデータをエンコードするためのコンピュータで実現される方法であって、
段階は、
ゲーム環境における１つ以上の通しプレイ（ｐｌａｙｔｈｒｏｕｇｈ）を記録する段階、
前記１つ以上の通しプレイからの複数のフレーム（ｆｒａｍｅ）をヒートマップ（ｈｅａｔｍａｐ）上の複数のセル（ｃｅｌｌ）に分類する段階（前記分類する段階は、前記ヒートマップと関連する分類されたフレームのリストを結果として生む）、
レンダラ（ｒｅｎｄｅｒｅｒ）において、前記分類されたフレームのリストを収集する段階、
前記ヒートマップの各セルに対する平均エンコードフレームサイズ（ａｖｅｒａｇｅ  ｅｎｃｏｄｅｄ  ｆｒａｍｅ  ｓｉｚｅ）を計算するために、前記分類されたフレームのリストから１つ以上のフレームをエンコードする段階（各平均エンコードフレームサイズは、セルあたり（ｐｅｒ−ｃｅｌｌ）の正規化されたエンコーダ品質設定と関連する）、および
各セルの前記平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する段階
を含み、
ゲームプレイ（ｇａｍｅｐｌａｙ）の間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンス（ｖｉｄｅｏ  ｓｅｑｕｅｎｃｅ）をコーディングするようにエンコーダにヒント（ｈｉｎｔ）を与えるために使用される、方法。
〔付記２〕
前記１つ以上のフレームは、
シングルパス（ｓｉｎｇｌｅ  ｐａｓｓ）によって前記ビデオシーケンスにコーディングされる、付記１に記載の方法。
〔付記３〕
前記レンダラにおいて、前記セルあたりの正規化されたエンコーダ品質設定を格納する段階
をさらに含む、付記１に記載の方法。
〔付記４〕
前記１つ以上の通しプレイは、
遠隔測定（ｔｅｌｅｍｅｔｒｙ）サーバに格納される、付記１に記載の方法。
〔付記５〕
前記１つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置（ｐｌａｙｅｒ  ｌｏｃａｔｉｏｎ）で構成される、付記１に記載の方法。
〔付記６〕
前記プレイヤ位置は、
前記エンコーダにヒントを与える前記セルあたりの正規化されたエンコーダ品質設定を選択するのに使用される、付記５に記載の方法。
〔付記７〕
前記セルあたりの正規化されたエンコーダ品質設定は、
下記の数式
【数６】
2020110608.tif 000008
によって解計算される、付記１に記載の方法。
〔付記８〕
空間関連シーケンスおよび時間関連シーケンスからの前記セルあたりの正規化されたエンコーダ品質設定を結合する段階
をさらに含む、付記１に記載の方法。
〔付記９〕
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、
ゲーム環境における１つ以上の通しプレイを記録し、
前記１つ以上の通しプレイからの複数のフレームをヒートマップ上の複数のセルに分類し（前記分類することは、前記ヒートマップと関連する分類されたフレームのリストを結果として生む）、
前記分類されたフレームのリストを収集し、
各セルの平均エンコードフレームサイズから前記ヒートマップに対する平均フレームサイズを計算する）および、
エンコーダ（前記エンコーダは、
前記ヒートマップの各セルに対する平均エンコードフレームサイズを計算するために、前記分類されたフレームのリストから１つ以上のフレームをエンコードし、各平均エンコードフレームサイズは、セルあたりの正規化されたエンコーダ品質設定と関連する）
を含み、
ゲームプレイの間、前記ヒートマップの前記セルに対応する前記セルあたりの正規化されたエンコーダ品質設定は、
ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
〔付記１０〕
前記１つ以上のフレームは、
シングルパスによって前記ビデオシーケンスにコーディングされる、付記９に記載のシステム。
〔付記１１〕
前記レンダラは、
前記セルあたりの正規化されたエンコーダ品質設定を格納する、付記９に記載のシステム。
〔付記１２〕
前記１つ以上の通しプレイは、
遠隔測定サーバに格納される、付記９に記載のシステム。
〔付記１３〕
前記１つ以上の通しプレイは、
複数のフレームおよび前記複数のフレームそれぞれと関連するプレイヤ位置で構成される、付記９に記載の方法。
〔付記１４〕
前記プレイヤ位置は、
前記エンコーダにヒントを与える前記セルあたりの正規化されたエンコーダ品質設定を選択するのに使用される、付記１３に記載の方法。
〔付記１５〕
前記セルあたりの正規化されたエンコーダ品質設定は、
以下の数式
【数７】
2020110608.tif 000009
によって計算される、付記９に記載のシステム。
〔付記１６〕
前記セルあたりの正規化されたエンコーダ品質設定は、
空間関連シーケンスおよび時間関連シーケンスから結合される、付記９に記載のシステム。
〔付記１７〕
データをエンコードするためのシステムであって、
レンダラ（前記レンダラは、複数のフレームで構成されるビデオシーケンスを記録する）および、
エンコーダ（前記エンコーダは、前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパス（ｍｕｌｔｉ−ｐａｓｓ）モードで前記ビデオシーケンスをコーディングし、前記エンコーダは、前記エンコーダ品質設定を記録する）を含み、
前記レンダラは、
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化し、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、システム。
〔付記１８〕
正規化されたエンコーダ品質設定は、
以下の数式
【数８】
2020110608.tif 000010
によって計算される、付記１７に記載のシステム。
〔付記１９〕
前記正規化されたエンコーダ品質設定は、
順序化されたフロート（ｆｌｏａｔ）のリストに格納される、付記１７に記載のシステム。
〔付記２０〕
前記正規化されたエンコーダ品質設定は、
ランタイムエンコーダ品質設定に掛けられ、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、付記１７に記載のシステム。
〔付記２１〕
前記ビデオシーケンスは、
１つ以上の他のビデオシーケンスと時間的に関連する、付記１７に記載のシステム。
〔付記２２〕
段階を含むエンコードのためのコンピュータで実現される方法であって、
段階は、
複数のフレームで構成されるビデオシーケンスを記録する段階、
前記ビデオシーケンスの１番目のフレームに対してエンコーダ品質設定を最適化するマルチパスモードによって前記ビデオシーケンスをエンコードする段階、
前記エンコーダ品質設定を記録する段階、および
前記エンコーダ品質設定を前記ビデオシーケンスの前記１番目のフレームによって正規化する段階
を含み、
前記正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするようにエンコーダにヒントを与えるために使用される、方法。
〔付記２３〕
正規化されたエンコーダ品質設定は、
以下の数式
【数９】
2020110608.tif 000011
によって計算される、付記２２に記載の方法。
〔付記２４〕
前記正規化されたエンコーダ品質設定は、
順序化されたフロートのリストに格納される、付記２２に記載の方法。
〔付記２５〕
前記正規化されたエンコーダ設定をランタイムエンコーダ品質設定に掛ける段階
をさらに含み、
前記掛けられた正規化されたエンコーダ品質設定は、
前記ビデオシーケンスをコーディングするように前記エンコーダにヒントを与えるために使用される、付記２２に記載の方法。
〔付記２６〕
前記ビデオシーケンスは、
１つ以上の他のビデオシーケンスと時間的に関連する、付記２２に記載の方法。
〔付記２７〕
段階を含むエンコーダヒンティング（ｈｉｎｔｉｎｇ）のためのコンピュータで実現される方法であって、
段階は、
ライブストリーミング（ｌｉｖｅ−ｓｔｒｅａｍｉｎｇ）アプリケーションのフレームレンダリングにおける変更と関連する情報をモニタリングする段階、
公差境界（ｔｏｌｅｒａｎｃｅ  ｂｏｕｎｄａｒｙ）、ローリング（ｒｏｌｌｉｎｇ）平均フレーム時間、およびフレーム時間の短期トレンド（ｓｈｏｒｔ−ｔｅｒｍ  ｔｒｅｎｄ）を計算する段階（前記計算値は、ビデオデータでフレーム時間ピーク（ｐｅａｋ）を識別するのに使用される）および、
前記フレーム時間ピークのサイズに比例して前記ビデオデータのフレーム出力の品質設定を変調するようにエンコーダにヒントを与える段階
を含む、方法。
〔付記２８〕
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの前記計算値は、
高エントロピ（ｈｉｇｈ−ｅｎｔｒｏｐｙ）フレームを識別するのに使用される、付記２７に記載の方法。
〔付記２９〕
前記公差境界の外側のフレーム時間に対する品質スケーリング値（ｑｕａｌｉｔｙ  ｓｃａｌｉｎｇ  ｖａｌｕｅ）を計算する段階
をさらに含み、
前記計算値は、
前記エンコーダにヒントを与えるために使用される、付記２７に記載の方法。
〔付記３０〕
前記公差境界は、
プロファイリング（ｐｒｏｆｉｌｉｎｇ）によって計算される、付記２７に記載の方法。
〔付記３１〕
前記モニタリングされた情報は、
ランタイムレンダリングプロセス中に発生する、メッセージ、計算結果、成果（ｏｕｔｃｏｍｅ）、または個別に（ｄｉｓｃｒｅｔｅｌｙ）測定可能な値うちのの１つ以上である、付記２７に記載の方法。
〔付記３２〕
前記モニタリングする段階は、
レンダリングプロセス中のフレームピーク検出を含む、付記２７に記載の方法。
〔付記３３〕
前記モニタリングする段階は、
非正常的に（ｕｎｕｓｕａｌｌｙ）長いか非正常的に短いフレーム時間を識別するために、各フレームのレンダリング時間を検出する段階
をさらに含む、付記３２に記載の方法。
〔付記３４〕
前記ビデオデータのビットレート（ｂｉｔｒａｔｅ）に対する前記モニタリングされた情報の効果を計算するために、レンダリング時間とイメージエントロピとの相関度（ｃｏｒｒｅｌａｔｉｏｎ）を使用する段階
をさらに含む、付記２７に記載の方法。
〔付記３５〕
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、長期トレンド（ｌｏｎｇ−ｔｅｒｍ  ｔｒｅｎｄ）を考慮しながら、短期異常値（ｏｕｔｌｉｅｒ）を識別するための信号処理および統計分析にローリング平均を使用する段階
をさらに含む、付記２７に記載の方法。
〔付記３６〕
レンダラにおいてフレーム出力の品質設定に対する品質設定値を計算するために、現在フレームからの測定されたフレーム時間、複数個の以前フレームからの測定されたフレーム時間、および／またはエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用する段階
をさらに含む、付記２７に記載の方法。
〔付記３７〕
エンコーダヒンティングのためのシステムであって、
サーバを含み、
前記サーバは、
ライブストリーミングアプリケーションのフレームエンコードにおける変更と関連する情報をモニタリングし、
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドを計算し（前記計算値は、フレーム時間ピークを識別するのに使用される）、
前記フレーム時間ピークのサイズに比例してフレーム出力の品質設定を変調するようにエンコーダにヒントを与える、システム。
〔付記３８〕
公差境界、ローリング平均フレーム時間、およびフレーム時間の短期トレンドの前記計算値は、
高エントロピフレームを識別するのに使用される、付記３７に記載のシステム。
〔付記３９〕
前記公差境界の外側のフレーム時間に対する品質スケーリング値を計算することをさらに含み、
前記計算値は、
前記エンコーダにヒントを与えるために使用される、付記３７に記載のシステム。
〔付記４０〕
前記公差境界は、
プロファイリングによって計算される、付記３７に記載のシステム。
〔付記４１〕
前記モニタリングされた情報は、
ランタイムレンダリングプロセス中に発生する、メッセージ、計算結果、成果、または個別に測定可能な値のうちの１つ以上である、付記３７に記載のシステム。
〔付記４２〕
前記モニタリングすることは、
レンダリングプロセス中のフレームピーク検出を含む、付記３７に記載のシステム。
〔付記４３〕
前記モニタリングすることは、
非正常的に長いか非正常的に短いフレーム時間を識別するために、各フレームのレンダリング時間を検出することをさらに含む、付記４２に記載のシステム。
〔付記４４〕
前記サーバは、
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、レンダリング時間とイメージエントロピとの相関度を適用する、付記３７に記載のシステム。
〔付記４５〕
前記サーバは、
前記ビデオデータのビットレートに対する前記モニタリングされた情報の効果を計算するために、長期トレンドを考慮しながら、短期異常値（ｏｕｔｌｉｅｒ）を識別するための信号処理および統計分析にローリング平均を適用する、付記３７に記載のシステム。
〔付記４６〕
前記サーバは、
レンダラにおいてフレーム出力の品質設定に対する品質設定値を計算するために、現在フレームからの測定されたフレーム時間、複数個の以前フレームからの測定されたフレーム時間、および／またはエンコーダによってレポーティングされたランタイムエンコーダ品質設定を使用する、付記３７に記載のシステム。
【図１】
2020110608.tif 000016
【図２】
2020110608.tif 000017
【図３】
2020110608.tif 000018
【図４】
2020110608.tif 000019
【図５】
2020110608.tif 000020
【図６】
2020110608.tif 000021
【図７】
2020110608.tif 000022
【図８】
2020110608.tif 000023