(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-20
(45)【発行日】2022-05-30
(54)【発明の名称】ビデオエンコードの延期されたポストプロセスのためのシステムおよび方法
(51)【国際特許分類】
H04N 21/654 20110101AFI20220523BHJP
H04N 19/127 20140101ALI20220523BHJP
H04N 19/164 20140101ALI20220523BHJP
H04N 19/172 20140101ALI20220523BHJP
G06F 13/00 20060101ALI20220523BHJP
【FI】
H04N21/654
H04N19/127
H04N19/164
H04N19/172
G06F13/00
(21)【出願番号】P 2020507500
(86)(22)【出願日】2018-04-20
(86)【国際出願番号】 US2018028582
(87)【国際公開番号】W WO2018195431
(87)【国際公開日】2018-10-25
【審査請求日】2020-10-26
(32)【優先日】2017-04-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-01-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519376166
【氏名又は名称】ゼニマックス メディア インク.
【氏名又は名称原語表記】ZENIMAX MEDIA INC.
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】コピエッツ,ミヒャエル
【審査官】松元 伸次
(56)【参考文献】
【文献】特開2016-111705(JP,A)
【文献】特開2006-014981(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06T11/00-11/40
15/00-17/00
17/10-17/30
H04L51/00-51/58
67/00-67/75
H04N7/10-7/173
7/20-7/56
19/00-21/858
(57)【特許請求の範囲】
【請求項1】
ポストプロセス(post-process)を延期させる(deferring)のためにコンピュータで実現される方法であって
、
クライアントハードウェア(client hardware)性能(capability)を測定するように、クライアントアプリケーション(client application)に命令語(instruction)を送信する段階、および
クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価するために、1つ以上の予め決定されたポストプロセス延期候補の既知荷重(known load)を合算するように、クライアントアプリケーションに命令語を送信する段階
を含み、
ポストプロセス延期リストは逆順にコンパイルされ、
サーバ
は、前記ポストプロセス延期リストを受信し、第1ビデオフレームのポストプロセッシングフェーズ(phase)の間、
前記リストに含まれるポストプロセ
スをスキップし、イメージをレンダリングするよう
にクライアントアプリケーションに命令語を送信する、
コンピュータで実現される方法。
【請求項2】
前記サーバは、メタデータフラッグ(metadata flag)とともに、前記クライアントアプリケーションに前記第1
ビデオフレームまたは次の利用可能なビデオフレームをリターンする、請求項1に記載のコンピュータで実現される方法。
【請求項3】
前記サーバがポストプロセスと関連するメタデータなしで、前記クライアントアプリケーションにエンコードされたビデオデータを送信する段階をさらに含む、請求項1に記載のコンピュータで実現される方法。
【請求項4】
ポストプロセスを延期させるためのシステムであって、ネットワークを介し、サーバは、
クライアントハードウェア性能を測定するように、クライアントアプリケーションに命令語を送信し、
クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価するために、1つ以上の予め決定されたポストプロセス延期候補の既知荷重を合算するように、クライアントアプリケーションに命令語を送信し、
ポストプロセス延期リストは逆順にコンパイルされ、
サーバ
は、前記ポストプロセス延期リストを受信し、第1ビデオフレームのポストプロセッシングフェーズの間、
前記リストに含まれるポストプロセ
スをスキップし、イメージをレンダリングするよう
にクライアントアプリケーションに命令語を送信する、システム。
【請求項5】
前記サーバは、メタデータフラッグ(metadata flag)とともに、前記クライアントアプリケーションに前記第1
ビデオフレームまたは次の利用可能なビデオフレームをリターンする、請求項4に記載のシステム。
【請求項6】
前記サーバは、ポストプロセスと関連するメタデータなしで、前記クライアントアプリケーションにエンコードされたビデオデータを送信する、請求項4に記載のシステム。
【請求項7】
ポストプロセスを延期させるためのコンピュータで実現される方法であって、
クライアントコンピュータから受信したポストプロセス延期リストであって、前記クライアントコンピュータにおけるポストプロセスのベンチマーキングに少なくとも基づき構築された前記ポストプロセス延期リストを使用して、延期のための1つ以上のポストプロセスを識別する段階、
1つ以上の識別された
前記ポストプロセスをスキップする段階、
コーデックで1つ以上のフレームを1つ以上のエンコードされたビデオに
エンコードする段階
であって、スキップされた
前記ポストプロセスは、エンコードには使用されない
、段階、および、
前記1つ以上のエンコードされたビデオを
前記クライアントコンピュータに送信する段階
であって、前記クライアント
コンピュータは
、スキップされた
前記ポストプロセスを出力前の前記エンコードされたビデオに適用する
、段階
を含む、コンピュータで実現される方法。
【請求項8】
ポストプロセスのスキップは、グラフィックスエンジン(graphics engine)で起こる、請求項7に記載のコンピュータで実現される方法。
【請求項9】
前記エンコードされたビデオのうちの少なくとも1つは、
前記クライアント
コンピュータへの送信前にサーバに格納される、請求項7に記載のコンピュータで実現される方法。
【請求項10】
前記ポストプロセス延期リストは、
前記クライアント
コンピュータの計算能力(computation power)
にも基づき構築された、請求項7に記載のコンピュータで実現される方法。
【請求項11】
前記サーバは、
前記クライアント
コンピュータからコントロールデータを受信する、請求項
9に記載のコンピュータで実現される方法。
【請求項12】
ポストプロセスを延期させるためのシステムであって、ネットワークを介し、サーバは、
クライアントコンピュータから受信したポストプロセス延期リストであって、前記クライアントコンピュータにおけるポストプロセスのベンチマーキングに少なくとも基づき構築された前記ポストプロセス延期リストを使用して、延期のための1つ以上のポストプロセスを識別
することと、
1つ以上の識別された
前記ポストプロセスをスキップ
することと、
コーデックで1つ以上のフレームを1つ以上のエンコード
されたビデオにエンコード
することであって、スキップされた
前記ポストプロセスは、エンコードには使用されない
、エンコードすることと、
前記1つ以上のエンコードされたビデオをクライアントコンピュータに送信する
ことであって、前記エンコードされたビデオのうちの少なくとも1つは、
前記クライアントコンピュータへの送信前に格納される
、送信することと
を行う、システム。
【請求項13】
ポストプロセスのスキップは、グラフィックスエンジン(graphics engine)で起こる、請求項12に記載のシステム。
【請求項14】
前記エンコードされたビデオのうちの少なくとも1つは、
前記クライアント
コンピュータへの送信前にサーバに格納される、請求項12に記載のシステム。
【請求項15】
前記ポストプロセス延期リストは、
前記クライアント
コンピュータの計算能力
にも基づき構築された、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2017年4月21日に出願された米国仮出願第62/488,526号および2018年1月17日に出願された米国仮出願第62/618,498号の利益を主張する。
【背景技術】
【0002】
サーバ側のゲームがクライアント側のプレイヤによって制御されるリモートゲーミングアプリケーションは、既存のまたはカスタマイズされたエンコーダを使用し、リアルタイムで3Dグラフィックスエンジン(graphics engine)からのビデオ出力をエンコードすることを試みていた。しかし、ビデオゲームの会話形式特性、特に、ビデオ出力とプレイヤ入力との間のプレイヤフィードバックループ(player feedback loop)は、ゲームビデオストリーミングの待機時間(latency)が一般的なビデオストリーミングよりも極めて長い。既存のビデオコーディング方法は、エンコード時間を減らすために計算能力(computational power)を交換することができるが、その他の方法はない。エンコードプロセスをビデオレンダリングプロセスに統合するための新たな方法は、エンコード時間を著しく減らすことはできるが、計算能力を低め、エンコードされたビデオの品質を改善し、既存のハードウェアデバイスの相互運用性を維持するためにオリジナルビットストリームデータ形式(original bitstream data format)を維持するようになる。
【0003】
一般的なビデオレンダリングパイプライン(pipeline)は、ビデオエンコードパイプラインから分離した独立的なものであり、2つのドメイン(domain)間でプロセスと専門知識(expertise)の交差は殆どない。結果的に、ビデオレンダリングパイプラインに適用された視覚効果(visual effect)およびポストプロセス(post-process)のうちの一部は、ビデオエンコードプロセスに逆効果をもたらし、ビデオアーティファクト(artifact)、エンコードされたビデオサイズの増加、エンコード時間の延長に繋がるようになる。しかし、このような視覚効果は、結果的なデコードされたビデオとしては依然として好ましい。
【0004】
ビデオレンダリングおよびビデオエンコードパイプラインを統合することにより、ポストプロセス効果がエンコードプロセスを改善するために延期されることがある。例えば、シミュレーションされたフィルム型グレーン(simulated filmic grain)は、一般的なエンコーダがビデオ品質または圧縮率に対して相当な費用をかけることなく、処理が困難であり無作為に発生するアニメーショングレーン(animated grain)を創出する。いくつかのビデオエンコード方法は、エンコードの前にこのような追加の視覚ノイズの除去を試みたが、このような方法はオフライン専用であり、相当の計算費用がかかる。レンダリングパイプラインでこのような特定のポストプロセスを非活性化することにより、ビデオの自動エンコードが容易となる。この後、ビデオがデコードされた後にポストプロセスが適用される。フィルム型グレーンの場合、デコードされたビデオにグレーンを合成することは計算上求められず、デコーダによってリアルタイムで実行することができ、他のエンコードアーティファクトを偽装することによって主観的なビデオ品質を改善することができる。
【0005】
国際特許出願WO2016172314 A1(「314出願」)は、芸術的意図を基盤としたコンテンツコーディングに関するシステムおよび方法を開示している。コーディングユーザインタフェースは、ユーザが芸術的セットを指定し、忠実度(fidelity)向上、QP調節値、および/またはポストプロセッシングのような芸術的セットと関連するピクセルおよび/またはブロックの処理を構成するように許容する。ビデオ出力に追加されることのできる芸術的意図の例は、エンコーダがエンコードの前にオリジナル信号からフィルムグレーンを除去し、フィルムグレーンSEIを使用してフィルムグレーンを再生成し、ディスプレイされる前にビデオ信号にこれを追加する方法をデコーダに伝達するときを含む。少なくとも「314出願」には、エンコードの前にレンダリングパイプラインで特定のポストプロセスを非活性化した後、ビデオがデコードされた後にこのようなポストプロセスを適用することは開示されていないため、本発明は「314出願」とは区分される。結果的に、本発明は、ビデオ品質または圧縮率に対して相当な費用をかけずにビデオデータの改善されたエンコードとデコードを提供するため、このようなコンピュータ技術に対する改善であると言える。さらに、本発明は、結果的に、帯域幅、ビットレート、エンコード時間を改善し、改善されたビデオ品質を有するリアルタイムビデオストリーミングアプリケーションに使用することができるため、改善であると言える。
【0006】
米国特許第9,609,330号(「‘330特許」)は、モードおよびレファレンス類型データのコンテンツ適応エントロピコーディングを開示しているが、これは、エンコーダの事前-分析器(pre-analyzer)サブシステムがコンテンツを分析してビデオコーディング効率および速度性能を改善するのに有用な多様な類型のパラメータを計算することを意味する。このようなパラメータは、水平および垂直グラディエント(gradient)情報(Rs、Cs)、分散(variance)、ピクチャ(picture)あたりの空間複雑度(spatial complexity)、ピクチャあたりの時間複雑度(temporal complexity)、シーン(scene)変化検出、動作範囲推定、ゲイン(gain)検出、予想距離推定、オブジェクト数推定、領域境界検出、空間複雑度マップ計算、フォーカス(focus)推定、およびフィルムグレーン推定を含む。言い換えれば、事前-分析器サブシステムによって生成されたパラメータは、エンコーダによって消費されるか量子化されてデコーダに伝達されるようになる。少なくとも‘330に開示された技術は、エンコードの前にレンダリングパイプラインで特定のポストプロセスを非活性化した後、ビデオがデコードされた後にこのようなポストプロセスを適用しないため、本発明はこの技術とは区別される。したがって、本発明は、ビデオ品質または圧縮率に対して相当な費用をかけなくても、ビデオデータの改善されたエンコードおよびデコードを提供するため、さらに改善されたビデオ品質を有するリアルタイムビデオストリーミングアプリケーションに使用することができるため、‘330特許のコンピュータ技術に対する改善であると言える。
【0007】
米国特許第9,762,911号(「’911特許」)は、モーションベクトル(motion vector)のコンテンツ適応予測およびエントロピコーディングと関連する技術のためのシステムおよび方法を開示している。開示された技術は、第1ビデオデータと第2ビデオデータがエントロピエンコーダモジュールでのエントロピコーディングのために受信されるように許容する。第1ビデオデータと第2ビデオデータは、相異するデータ類型(例えば、本文書でさらに説明するように、ヘッダ(header)データ、モーフィング(morphing)パラメータ、合成(synthesizing)パラメータ、またはグローバルマップデータまたはモーションベクトルまたはイントラ予測パーティションデータなど)であってよい。第1エントロピエンコード技術は、例えば、第1ビデオデータの圧縮されたビートの数、第1ビデオデータと関連する予め決定されたインジケータ(indicator)やフラッグ、予め決定された閾値、または経験的に(heuristically)決定された閾値などのような第1ビデオデータと関連するパラメータを基盤として第1ビデオデータのために決定されてよい。いくつかの例において、第1エントロピエンコード技術は、適応型(adaptive)シンボルラン(symbol-run)可変長コーディング技術または適応型プロキシ(proxy)可変長コーディング技術のうちの1つが選択されてよい。第1ビデオデータは、第1エントロピエンコード技術によってエントロピエンコードされてよく、第2ビデオデータは、第1エントロピエンコード技術によってエントロピエンコードされてよい。言い換えれば、少なくとも‘911特許に記載された技術は、エンコードの前にレンダリングパイプラインでポストプロセスを選択的に非活性化した後、ビデオがデコードされた後にこのようなポストプロセスを適用することを含んでいないため、本発明とは区分される。言い換えれば、本発明は、ビデオ品質や圧縮率に対して相当な費用をかけなくても、ビデオデータの改善されたエンコードおよびデコードを提供するため、‘911特許のコンピュータ技術に対する改善であると言える。さらに、本発明は、結果的に、ビットレートおよびエンコード時間を改善し、改善されたビデオ品質を有するリアルタイムビデオストリーミングアプリケーションに使用することができるため、改善であると言える。
【0008】
上述の説明によって明らかであるが、ゲーム環境でのビデオエンコードと関連する現在のコンピュータ技術に対する改善が、該当の技術分野において必要である。
【発明の概要】
【発明が解決しようとする課題】
【0009】
したがって、本文書に開示された例示的な実施形態の目的は、該当の技術分野の課題を解決し、技術を用いることによって待機時間とエンコード時間を減少させるためのシステムおよび方法を提供することにあり、その技術において、サーバは、クライアントハードウェア(disadvantages)性能(capability)を測定するように、クライアントアプリケーション(client application)に命令語(instruction)を送信し、クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価するために、1つ以上の予め決定されたポストプロセス延期候補の既知荷重(known load)を合算するように、クライアントアプリケーションに命令語を送信する。クライアントアプリケーションにおいてポストプロセス延期リストがコンパイルされ、逆順に構築される。この後、サーバは、ポストプロセス延期リストを受信し、第1ビデオフレームのポストプロセッシングフェーズ(phase)の間、延期されたポストプロセスのリストをスキップし、イメージをレンダリングするように、クライアントアプリケーションに命令語を送信する。
【0010】
本発明の他の目的は、クライアントハードウェアの性能を再測定するか否かを判断するように、コールバック(callback)を実行するか、1つ以上のオペレーティングシステムイベント(operating system event)をポーリングするクライアントアプリケーションを有することにより、待機時間およびエンコード時間を減少させるためのシステムおよび方法を提供することにある。
【0011】
本発明のまた他の目的は、利用可能な命令語セット、メモリ、CPUおよび/またはGPU特性を検出することにより、クライアントハードウェアの性能を測定することにより、待機時間およびエンコード時間を減少させるためのシステムおよび方法を提供することにある。
【0012】
本発明のさらに他の目的は、フレームレート(frame rate)および/またはリソース使用量(resource usage)を測定することにより、クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価することにより、待機時間およびエンコード時間を減少させるためのシステムおよび方法を提供することにある。
【0013】
添付の図面は、後述する詳細な説明を参照することでより適切に理解することができるため、本発明の完全な理解およびこれによる多くの利点を容易に得ることができるであろう。
【図面の簡単な説明】
【0014】
【
図1】本発明の一実施形態における、遠隔クライアントに示すためのビデオをレンダリングする3Dグラフィックスエンジンの例を示したブロック図である。
【
図2】本発明の一実施形態における、ピクセルあたりの(per-pixel)ポストプロセッシングを延期させることにより、エンコード時間または主観的なビデオ品質を改善するために求められる段階の例を説明するためのフローチャートである。
【
図3】本発明の一実施形態における、ビデオレンダリング、エンコード、およびデコードフェーズ間の延期されたピクセルあたりの品質の最小実現の例を示した図である。
【
図4】本発明の実施形態における、延期されたポストプロセスのリストを同期化するためのサーバ-クライアント間の通信例を説明するためのフローチャートである。
【発明を実施するための形態】
【0015】
図面に示す発明の好ましい実施形態を記述するにあたり、明確化のために、特定の用語に依存することがある。しかし、本発明は、このように選択された特定の用語に限定されることを意図としておらず、それぞれの特定の用語は、類似の目的を達成するために類似の方式で作動するすべての技術的等価物を含むものと理解されなければならない。本発明の好ましい実施形態は、例示の目的として記述されているが、本発明は、図面に具体的に示されていない他の形態によっても実現可能であることが理解されなければならない。
【0016】
ポストプロセッシングパイプラインは、アンチエイリアス(anti-aliasing)、モーションブロー(motionblur)、深度(depth of field)、カラーグレーディング(color grading)、ブルーム(bloom)、フィルムグレーン、色収差(chromatic aberration)、ビネッティング(vignetting)、およびトーンマッピング(tone mapping)を含む多くの複雑なプロセスを実行してよい。このような効果のうちの一部は、エンコードプロセスに極めて有害であり、未処理のフレームと比べると、エンコード時間を増加させて圧縮率を減らす。フレームがデコードされるまで特定のポストプロセスの適用を待つことは、主観的なビデオ品質を向上させ、追加の有益なトレードオフ(trade off)などの提供に繋がる。
【0017】
クライアントアプリケーションを開発(development)するとき、エンコード時間、帯域幅、および主観的な品質の均衡は、ポストプロセスが延期に適した候補であるかを判断するように、レンダリングパイプラインで各ポストプロセスのために評価されなければならない。延期候補のリストは、クライアントで延期されるようになるポストプロセスを決定するように、ランタイム(runtime)内にクライアントによって使用されるであろう。
【0018】
各ポストプロセスは、その効果がエンコードプロセスに及ぼす程度を測定するようにテストされなければならない。先ず、一連のレファレンスフレーム(reference frame)は、変更されない(unaltered)レンダリングおよびエンコードパイプラインを経て供給されなければならず、エンコード時間とエンコードされたフレームサイズが測定されなければならない。ポストプロセスは、レンダリングパイプラインで1度に1つずつ解除されなければならず、エンコード時間とエンコードされたフレームサイズは、制御結果と比較されなければならない。このような測定は、ポストプロセスの延期に適した候補であるかを知らせるために役立つであろう。増加したエンコードされたフレームサイズによって測定されるイメージエントロピを増加させる殆どすべてのポストプロセス効果は、延期に適した候補になるであろう。例えば、シミュレーションされたフィルム型グレーン(simulated filmic grain)ポストプロセスは、イメージにランダムノイズ(random noise)を追加して圧縮率を低める。特定の状況において、色収差およびブルームは、イメージエントロピを増加させ、その結果として圧縮率を低めるようになる。エントロピまたはイメージデータを減少させる殆どすべてのポストプロセス効果は延期されなければならないが、これは、エントロピの減少がエンコードオーバヘッドを減少させることになるためである。
【0019】
イメージエントロピを変更しないポストプロセスは、主観的なビデオ品質の改善またはサーバ負荷の減少のような二次的な目標を達成するために、延期候補として選択されてよい。例えば、カラーグレーディングは、エンコード時間または帯域幅の使用に影響を及ぼさないこともあるが、クライアントに延期されるときには、サーバ側の計算負荷で注目するだけの減少をもたらすようになる。これと同様に、アンチエイリアスは、延期されるときに主観的なビデオ品質を改善し、サーバ側の負荷を大きく減少させることができる。追加のテストは、これがエントロピ-中立的な(entropy-neutral)ポストプロセスを延期させるのに有利であるかを判断するように実行されなければならない。例えば、レファレンスフレームを使用する類似のテスト手順は、エントロピ-中立的なポストプロセスを延期させる前後のサーバ負荷を比較するために使用されてよい。
【0020】
クライアントアプリケーションは、各延期候補のためにポストプロセッシング計算を実行しなければならない。いくつかのコード(code)のリファクタリング(refactoring)が、このような機能をクライアントアプリケーションに移動させるために必要となる場合がある。フィルム型グレーン、色収差、またはビネティングのようなレンダリングパイプラインの末端でのポストプロセスは、一般的に、アンチエイリアスまたは深度のようなレンダリングパイプラインで初期に発生するものよりも、クライアントアプリケーションに移動する方が容易である。ポストプロセスを延期させることが、これが色収差、ブルーム、またはビネティングのようなトーンマッピング前に適用されるこのようなポストプロセスのような線形空間に一般的に適用されるとき、これが非線形空間に適用されることで引き起こるいくつかのケースが考えられる。プロセスはガンマ空間に直接に適用されてよく、数学的に正確でない場合もあるが、その差はビューア(viewer)では認識することができず、全体の主観的な品質が改善されるようになる。そうでなければ、いくつかのクライアント側の計算周期(compute cycle)の費用とイメージ品質の損失により、クライアントアプリケーションがイメージを線形空間に再変換し、ポストプロセスを適用した後、ガンマ空間に再変換することも可能ではある。しかし、イメージは、エンコード中に量子化されて圧縮されるはずであるため、線形空間への再変換は、一部の品質を低下させることになるであろう。このような主観的な品質決定は、クライアントアプリケーションの開発(development)中に行われなければならない。
【0021】
クライアントアプリケーションが実行することのできるすべてのポストプロセスは、延期候補リストの基礎を形成する。延期候補のリストは、いずれかの従属性を維持するために、レンダリングパイプラインに現れる手順と等しくなければならない。さらに、リストにおいて、各延期候補は、メモリ最小値またはGPU要求事項のようなハードウェアの特徴要求事項と対をなさなければならない。
【0022】
図1は、ビデオレンダリング中にピクセル品質(pixel-quality)ポストプロセスが延期されたシステムの例を示した図である。このようなシステムの例は、他の類型のビデオシステムと比較するとき、ピクセルあたりの(per-pixel)品質プロセスを延期させることにより、提供される主観的な品質改善と減少されたエンコード時間から最大の利点を得ることのできるリアルタイム遠隔ゲームストリーミングアプリケーションを示す。このようなシステムにおいて、サーバ100は、ビデオ出力をレンダリングするビデオゲームソフトウェア102と、グラフィックスエンジン104をホスティングする。ビデオは、コーデック(codec)106でエンコードされ、エンコードされたビデオデータ108は遠隔クライアントに送信される。サーバアキテクチャ100は、グラフィックスエンジン104とコーデック106の両者の機能をすべて支援することのできるハードウェアまたはソフトウェアのいずれかの組み合わせである。図に示す例において、グラフィックスエンジン104は、例えば、いくつかのコンピュータ読み取り可能なメモリ112にロードされたビデオゲームソフトウェア102を実行するGPU110として実現可能であり、コーデック106(エンコーダともいう)は、ビデオエンコードソフトウェアを実行するCPU114として実現可能である。
【0023】
遠隔クライアントコンピュータシステム116は、送信されたエンコードされたビデオデータ108をデコードするようにクライアント側のコーデック118を実行させ、延期されたピクセル品質ポストプロセスを適用するようにクライアントアプリケーション120を実行させてよい。また、クライアントコンピュータシステム116は、ディスプレイハードウェア(display hardware)124を実行させるためのディスプレイコントローラ(display controller)122を含む。クライアント側の入力周辺装置126からの入力は、クライアントアプリケーション120により、サーバ100上で実行されるゲームソフトウェア102に再送信されるコントロールデータ(control data)128に変換されるであろう。延期されたピクセル品質ポストプロセッシングの特定の実現に基づき、正確なポストプロセスが与えられたビデオフレームのために適用されるように保障するために、いくつかの追加のコントロールデータ128がサーバ側のソフトウェア102からクライアントアプリケーション120に動く必要がある。
【0024】
図2は、ビデオをレンダリング、エンコード、およびデコードするシステにおいて、ポストプロセッシングを延期させるために求められる段階を示している。段階200で、レンダリングパイプラインがサーバ100で通常どおりに(as usual)始まる。ポストプロセッシングフェーズの前に、レンダリングプロセスに対する変化は必要ない。
段階202で、サーバ100のグラフィックスエンジン104でのビデオレンダリングポストプロセッシングフェーズにおいて、いずれかの延期されるポストプロセスがスキップ(skip)されなければならない。クライアントコンピュータシステム116がすべての延期されたポストプロセスを適用するために求められる計算能力を有すれば、いずれかの数のポストプロセスがスキップされるようになる。
図4は、サーバ100によってポストプロセスが延期されるかを判断する方法をさらに詳細に説明する。いずれかの延期されたポストプロセスをスキップした後、レンダリングパイプラインは、フレームが完全にレンダリングされるまで継続しなければならない。
【0025】
段階204で、結果フレームは、コーデック106でエンコードされる。延期されたポストプロセスの選択に基づき、エンコード時間はより速く、エンコードされたデータはさらに少ない帯域幅を必要とするようになる。例えば、フィルム型グレーンポストプロセスが延期されると、コーデック106は、導入されるノイズなく、フレームをエンコードするのにさらに容易な時間を有するであろう。
【0026】
段階206で、エンコードされたビデオデータ108は、必要によっては、格納されるか、遠隔クライアントコンピュータシステム116に送信される。リアルタイムビデオゲームストリーミングアプリケーションにおいて、
図1に示す例のように、ビデオデータ108は即時に送信されるであろう。他の実施形態に係るシステムにおいて、エンコードされたビデオデータ108は、注文型ストリーミング(demand streaming)のためにサーバ100に格納されるか、物理的メディアに格納されてよい。
【0027】
段階208で、エンコードされたビデオは、遠隔クライアントコンピュータシステム116のコーデック118でデコードされる。デコードプロセスに変更される必要はない。
【0028】
段階210で、ソフトウェアアプリケーションは、レンダリングパイプラインに現れるときと同じ順序で、延期されたいずれかのポストプロセスを適用するであろう。また、クライアントアプリケーション120として、
図1に示すようなソフトウェアは、延期されたポストプロセスがフレームごとに変更されると、サーバ100からコントロールデータ128を受信する必要がある場合がある。また、クライアントアプリケーション120は、ビデオゲームストリーミングシステムのようにビデオが会話形式であれば、コントロールデータ128を送信する必要がある場合がある。クライアントアプリケーション120は、延期されたポストプロセスの計算複雑度の要求事項にしたがってスパース(sparse)してよく、これは、クライアントで広範囲の計算能力を許容してよい。
【0029】
図3は、
図1のシステムで延期されたポストプロセッシングを実現する例を示した図である。サーバ100に位置する「レンダリングパイプライン」段階300に示される一般的な3Dレンダリングパイプラインは、「アプリケーション」段階302、「ジオメトリ(geometry)」段階304、および「ラスタライゼーション(rasterization)」段階306に示されるラスタライゼーションフェーズによって実行される。「ラスタライゼーション」段階306において、ラスタライゼーションフェーズの出力は、完全なビデオフレームであって、これは「ポストプロセッシング」段階308でポストプロセッシングによって大体が向上する。いくつかのポストプロセスは、「エンコード」段階310でエンコードプロセス中にエンコード時間または帯域幅に悪影響を及ぼし、このようなポストプロセスは、クライアントが後にこれらを適用するようになれば、「ポストプロセッシング」段階308のポストプロセッシングフェーズでスキップされる。クライアント116に対して延期されなかった残りのポストプロセスは、「ポストプロセッシング」段階308でポストプロセッシング中に通常どおりに(as usual)適用される。出力されるビデオフレームは「エンコード」段階310でエンコードされ、「送信」段階312で送信される。
【0030】
クライアント116は、エンコードされたビデオフレームを受信し、これは「デコード」段階314でデコードされる。この時点で、すべての延期されたポストプロセスが「延期されたポストプロセッシング」段階316でデコードされたフレームに適用される。例えば、フィルム型グレーンの場合、アニメーション効果(animated effect)は予めキャッシングされ、比較的低い計算費用でデコードされたフレームに合成されようになる。カラーグレーディング、ディザリング(dithering)およびビデオ鮮明化のためのリアルタイムソリューション(solution)が既に存在しており、クライアントの計算能力に基づいて適用されるようになる。結果、ビデオフレームは、「ディスプレイ」段階318でディスプレイされる。
【0031】
図4は、クライアントアプリケーション120が延期されるポストプロセスのリストを構築してサーバ100にリストを伝達するプロセスを示している。
【0032】
段階400において、クライアントアプリケーション120は、クライアント116に対して延期されるようになるポストプロセスを決定するように、クライアントハードウェアの性能を測定するであろう。クライアント性能は、利用可能な命令語セット、メモリ、CPUまたはGPUのようなハードウェア情報に対する特徴検出によって測定されてよい。
【0033】
段階402で、クライアントアプリケーション120は、延期候補のリストを読み取り、クライアントによってハードウェア要求事項が満たされていない延期候補を廃棄する。延期候補ポストプロセスは、リアルタイムクライアント性能を測定するようにクライアントでベンチマーキング(benchmarking)されなければならない。延期候補は、クライアントがこれ以上、フレームレート(frame rate)、リソース使用量(resource usage)、または他のリアルタイム測定によって測定された好ましい性能を維持することができなくなるまで、ベンチマーキングプロセスに1度に1つずつ追加される。ベンチマーキングは、クライアントアプリケーションのインストール中、クライアントアプリケーション120の初期負荷中、またはアプリケーションの負荷ごとに、実行されてよい。
【0034】
クライアント116は、できるだけ多くの延期候補に対してポストプロセッシングを実行しなければならない。延期リストは、全体作業の順序をオリジナルレンダリングパイプラインの順序に近づけて維持するために逆順に構築される。例えば、モバイルデバイス(mobile device)は、最後のポストプロセスだけを実行してよく、ラップトップ(laptop)は、レンダリングパイプラインの末端から3つのポストプロセスを実行してよい反面、新たなデスクトップ(desktop)コンピュータは、延期候補リストのすべてのポストプロセスを実行してよい。
【0035】
段階404で、クライアント116は、延期させるポストプロセスのリストをサーバ100に送信する。
【0036】
段階202で、サーバ100は、第1ビデオフレームのポストプロセッシングフェーズ中に延期されたポストプロセスのリストを使用する。延期リストのすべてのポストプロセスはスキップされる。
【0037】
段階206で、エンコードされたビデオデータストリーム108は、クライアント116への送信を始める。クライアント116は、いずれかのフレームが生成される前に延期リストを送信したため、追加のメタデータがサーバ100からクライアント116に送信される必要はない。クライアント116は、ポストプロセスが延期されたことを自動で知ることになるであろう。
【0038】
段階210で、クライアント116は、すべてのポストプロセスを延期リストに適用する。クライアント116は、追後のフレームに延期されたポストプロセスを継続して適用するであろう。
【0039】
ランタイム中にクライアント性能が変わることにより、延期されたポストプロセスのリスト変更を求めるというシナリオが考えられる。例えば、クライアントアプリケーションがバッテリ節約モードに突入したモバイルデバイスで実行されていれば、クライアントは、延期されたポストプロセスのリストの縮小を試みるようになる。このような例において、クライアントアプリケーションは、バッテリ状態の変化に応じて受信するため、コールバック(callback)を登録するか、オペレーティングシステム(operating system:OS)イベントなどをポーリングする必要が生じるようになる。段階412で、クライアントアプリケーション120は、クライアント性能を再測定することにより、最近の環境変化に応答する。環境変化は、遠隔クライアントコンピュータシステム116のハードウェア性能に影響を及ぼす、何らかの変化であってよい。上述した例として、バッテリ節約モードは、直接にフェッチ(fetch)される倍率(multiplier)でクロックレート(clock rate)を減らす。クロックレートの倍率の変化は、クライアント性能の変化に対する大略的な推定を提供することができる。そうでなければ、バッテリ節約モードでの追加のベンチマーキングは、段階402で説明したベンチマーキングフェーズに追加されてよい。
【0040】
クライアント性能が変わると、クライアントアプリケーション120は、段階414で延期されるようになるポストプロセスを再評価するであろう。バッテリ節約モードを例に挙げると、延期リストは、クロックレートの倍率の変化に比例して減少するようになる。例えば、バッテリ節約モードは、50%程度のクロックレートを減らせば、延期リストを少なくとも半分程度に減らすことができるであろう。クライアント116が4つのポストプロセスを延期させたとすれば、リストを2つのポストプロセスに減らすことができるであろう。そうでなければ、バッテリ節約モードのベンチマーキングが既に実行されていれば、延期リストは既に認知されているはずである。
【0041】
延期リストが変わると、クライアント116は、段階416において、変更された延期リストをサーバ100に送信するであろう。クライアント116は、サーバ100からメッセージを受信するまで、オリジナル延期リストからのポストプロセスを継続して適用するはずであり、メッセージは、他の延期されたポストプロセスのリストで構成されることが好ましい。
【0042】
段階418で、サーバ100は、次の利用可能なフレームに変更された延期リストを適用する。クライアント116と同期化するために、一部のメタデータがこのフレームに適用される。
【0043】
段階420で、エンコードされたビデオデータ108のフレームは、これに対応するメタデータとともに送信される。
【0044】
クライアントは、メタデータフラッグ(flag)を受信するまで待機する。段階422で、クライアント116は、変更された延期リストにしたがってフレームの処理を始める。クライアント116は、変更された延期リストにしたがい、延期されたポストプロセスを継続して適用するであろう。ランタイム環境が再び変わると、段階412から始まり、延期リストは再び増加したり減少したりするようになる。延期リストがモバイルデバイスのバッテリ節約モードのような一時的なランタイム環境変化によって縮小されると、クライアントアプリケーション120は、可能な限り最大のポストプロセスが与えられた時間に延期されるように、最も早い機会に延期リストを増加させなければならない。
【0045】
例1:ベンチマーキングテストの結果
フィルム型グレーンは、エンコーダの圧縮率に大きな影響をもたらす、無作為に発生する視覚的ノイズを出す。クライアント側にフィルム型グレーンのようなポストプロセスを適用することは、エンコードされたフレームサイズがより小さくなるという結果をもたらすであろう。
【0046】
実験的なビットレート値は、グラフィックスエンジンが1秒あたり60フレームで1280×720の解像度で出力を生成する間に採択され、平均ビットレートを見つけ出すために60フレームに渡って平均した。測定された値は、サーバ側でフィルム型グレーンが適用されるビデオストリームのビットレートと、フィルム型グレーンがクライアントに対して延期されたビデオストリームのビットレートとを比較する。このような測定は、3種類の大きさのフィルム型グレーンと2つのエンコーダ品質設定値に対して繰り返される。フィルム型グレーン1は最も小さなグレーンサイズを示す反面、フィルム型グレーン3は最大のグレーンサイズを示す。実験結果は、以下の表1および表2に示した。表1は16のエンコーダ品質を使用した結果を示しており、表2は20のエンコーダ品質を使用した結果を示している。
【0047】
【0048】
【0049】
実験結果に基づき、フィルム型グレーンのようなポストプロセスは、より大きなエンコードされたフレームサイズをもたらすことが分かるが、これは好ましくないことが明らかである。このような否定的な影響は、エンコーダ品質値が高いほどより明らかになり、導入したノイズの量が増加することによってより明らかになる。しかし、クライアントに対してフィルム型グレーンを延期させることにより、ビットレートにおける劇的な減少は、表1および表2に示すように達成されるようになるが、ここで、ビットレートはそれぞれ、270Kbyte/sおよび140Kbyte/sに減少する。導入したノイズの量とは関係なく、このような実験でフィルム型グレーンのサイズによって測定されることにより、ビットレートは与えられたエンコーダ品質に対して安定的に維持される。
【0050】
これと同様に、以下の表3に示すように、グラフィックスエンジンが多数のエンコーダ品質設定のために60フレームで1280×720の解像度で出力を生成する間、実験的なエンコード時間が測定された。測定された値は、サブ側でフィルム型グレーンが適用されるビデオストリームに対するエンコード時間と、フィルム型グレーンがクライアントに対して延期されたビデオストリームのエンコード時間とを比較する。フィルム型グレーンのサイズは、すべての測定で固定的に維持される。表3に示すように、本文書で説明される技術を適用するエンコード時間の減少は、より高いエンコーダ品質の設定でより明らかになることを確認することができる。
【0051】
【0052】
上述した説明および図面は、本発明の原理を例示するためのものに過ぎない。本発明は、好ましい実施形態によって制限されるように意図されてはならず、該当の技術分野において通常の知識を有する者にとって明白である、多様な方式で実現されるであろう。本発明の多数の応用は、該当の技術分野において通常の知識を有する者によって容易に実現されるであろう。したがって、開示された特定の例示または図に示されて説明された正確な構成と動作によって本発明を制限することは好ましくない。むしろ、すべての適切な修正および均等物が、本発明の範囲内に属するものと理解されなければならない。
〔付記1〕
段階を含むポストプロセス(post-process)を延期させる(deferring)のためにコンピュータで実現される方法であって、
段階は、
クライアントハードウェア(client hardware)性能(capability)を測定するように、クライアントアプリケーション(client application)に命令語(instruction)を送信する段階、および
クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価するために、1つ以上の予め決定されたポストプロセス延期候補の既知荷重(known load)を合算するように、クライアントアプリケーションに命令語を送信する段階を含み、
ポストプロセス延期リストがコンパイルされ、
前記ポストプロセス延期リストは逆順に構築され、
サーバが前記ポストプロセス延期リストを受信し、第1ビデオフレームのポストプロセッシングフェーズ(phase)の間、延期されたポストプロセスのリストをスキップし、イメージをレンダリングするように、クライアントアプリケーションに命令語を送信する、方法。
〔付記2〕
前記ポストプロセス延期リストは、ベンチマーキング(benchmarking)プロセスに追加される、付記1に記載の方法。
〔付記3〕
前記クライアントアプリケーションは、
1つ以上の環境変化に応答して前記クライアントハードウェアの前記性能を再測定する、付記1に記載の方法。
〔付記4〕
前記クライアントアプリケーションは、
前記クライアントハードウェアの前記性能を再測定するか否かを判断するように、コールバック(callback)を実行するか、1つ以上のオペレーティングシステムイベント(operating system event)をポーリングする、付記3に記載の方法。
〔付記5〕
前記クライアントアプリケーションは、
フレームレート(framerate)および/またはリソース使用量(resource usage)を測定することにより、前記クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価する、付記1に記載の方法。
〔付記6〕
前記サーバは、
次の利用可能なビデオフレームにアップデートされた延期リストを適用する、付記1に記載の方法。
〔付記7〕
前記サーバがポストプロセスと関連するメタデータなしで、前記クライアントアプリケーションにエンコードされたビデオデータを送信する段階をさらに含む、付記1に記載の方法。
〔付記8〕
前記クライアントハードウェアの前記性能は、
利用可能な命令語セット、メモリ、CPUおよび/またはGPU特性を検出することによって測定される、付記1に記載の方法。
〔付記9〕
前記ポストプロセス延期候補のリストは、
前記クライアントハードウェアのバッテリ状態に対する変化を基盤として再計算される、付記1に記載の方法。
〔付記10〕
前記サーバは、
メタデータフラッグ(metadata flag)とともに、前記クライアントアプリケーションに前記第1または次の利用可能なビデオフレームをリターンする、付記1に記載の方法。
〔付記11〕
ポストプロセスを延期させるためのシステムであって、ネットワークを介し、サーバは、
クライアントハードウェア性能を測定するように、クライアントアプリケーションに命令語を送信し、
クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価するために、1つ以上の予め決定されたポストプロセス延期候補の既知荷重を合算するように、クライアントアプリケーションに命令語を送信し、
ポストプロセス延期リストがコンパイルされ、
前記ポストプロセス延期リストは逆順に構築され、
サーバが前記ポストプロセス延期リストを受信し、第1ビデオフレームのポストプロセッシングフェーズの間、延期されたポストプロセスのリストをスキップし、イメージをレンダリングするように、クライアントアプリケーションに命令語を送信する、システム。
〔付記12〕
前記ポストプロセス延期リストは、ベンチマーキングプロセスに追加される、付記11に記載のシステム。
〔付記13〕
前記クライアントアプリケーションは、
1つ以上の環境変化に応答して前記クライアントハードウェアの前記性能を再測定する、付記11に記載のシステム。
〔付記14〕
前記クライアントアプリケーションは、
前記クライアントハードウェアの前記性能を再測定するか否かを判断するように、コールバックを実行するか、1つ以上のオペレーティングシステムイベントなどをポーリングする、付記13に記載のシステム。
〔付記15〕
前記クライアントアプリケーションは、
フレームレートおよび/またはリソース使用量を測定することにより、前記クライアントハードウェアに対してどれほど多くのポストプロセス延期候補が延期されるようになるかを評価する、付記11に記載のシステム。
〔付記16〕
前記サーバは、
次の利用可能なビデオフレームにアップデートされた延期リストを適用する、付記11に記載のシステム。
〔付記17〕
前記サーバは、
ポストプロセスと関連するメタデータなしで、前記クライアントアプリケーションにエンコードされたビデオデータを送信する、付記11に記載のシステム。
〔付記18〕
前記クライアントハードウェアの前記性能は、
利用可能な命令語セット、メモリ、CPUおよび/またはGPU特性を検出することによって測定される、付記11に記載のシステム。
〔付記19〕
前記ポストプロセス延期候補のリストは、
前記クライアントハードウェアのバッテリ状態に対する変化を基盤として再計算される、付記11に記載のシステム。
〔付記20〕
前記サーバは、
メタデータフラッグとともに、前記クライアントアプリケーションに前記第1または次の利用可能なビデオフレームをリターンする、付記11に記載のシステム。