(57)【特許請求の範囲】
【請求項１】
コンピュータによって実施される方法であって、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を含むことを特徴とする方法。
【請求項２】
前記第１の１組の符号化されたチャンクを生成する前記工程が、
前記ソースビデオシーケンス内において、第１のキャプチャ地点と関連付けられた第１のフレームのシーケンスを識別する工程と、
前記第１のフレームのシーケンスを複数の異なる解像度でリサンプリングすることにより、前記第１のフレームのシーケンスのリサンプリングされたバージョンの解像度ラダーを生成する工程と、
前記第１のフレームのシーケンスの各前記リサンプリングされたバージョンを、それぞれ異なる符号化パラメータを用いて符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程と
を含む、請求項１記載のコンピュータによって実施される方法。
【請求項３】
前記第１の１組のデータ点を生成する前記工程が、
前記第１の１組の符号化されたチャンクのうちの各符号化されたチャンクを復号化することにより、第１の１組の復号化されたチャンクを生成する工程と、
前記第１の１組の復号化されたチャンクのうちの各復号化されたチャンクを、前記ソースビデオシーケンスと関連付けられたソース解像度にアップサンプリングすることにより、第１の１組のアップサンプリングされたチャンクを生成する工程と、
第１の１組のアップサンプリングされたチャンクのうちの各アップサンプリングされたチャンクについて、それぞれ異なるデータ点を生成する工程と
を含む、請求項１記載のコンピュータによって実施される方法。
【請求項４】
前記第１の１組のデータ点のうちの特定のデータ点が、
前記第１の１組のアップサンプリングされたチャンクのうちの特定のアップサンプリングされたチャンクについての特定の客観的品質測定指標を生成することと、
前記特定の客観的品質測定指標を特定の歪み測定指標に変換することと、
前記特定のアップサンプリングされたチャンクについてのビットレートを計算することと、
前記特定の歪み測定指標と前記ビットレートとを組み合わせることにより、前記特定のデータ点を生成することと
によって、生成される、請求項３記載のコンピュータによって実施される方法。
【請求項５】
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記第１のサブセットのデータ点を計算する前記工程が、
前記第１の１組のデータ点を含む第１の領域を決定する工程と、
前記第１の領域の第１の境界であって、該第１の境界の第１の側に、前記第１の１組のデータ点のうちのデータ点が存在しない、第１の境界を識別する工程と、
前記第１の境界に沿って存在していないあらゆるデータ点を捨てる工程であって、前記第１の境界に沿って存在する各データ点が、前記第２の測定指標に関して前記第１の測定指標を最適化する、工程と
を含む、請求項１記載のコンピュータによって実施される方法。
【請求項６】
前記第１の測定指標が歪みを含み、前記第２の測定指標がビットレートを含む、請求項５記載のコンピュータによって実施される方法。
【請求項７】
前記ソースビデオシーケンスについての第２の１組の符号化されたチャンクを生成する工程と、
前記第２の１組の符号化されたチャンクに基づいて、第２の１組のデータ点を生成する工程と、
前記第２の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記少なくとも２つの測定指標にわたって最適化された第２のサブセットのデータ点を計算する工程と、
前記第２のサブセットのデータ点に含まれる第３のデータ点と前記第２のサブセットのデータ点に含まれる第４のデータ点との間の第２の勾配値を計算する工程と
を更に含む、請求項１記載のコンピュータによって実施される方法。
【請求項８】
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する前記工程が、前記第１の勾配の大きさが第２の勾配より大きいことを決定する工程を含む、請求項７記載のコンピュータによって実施される方法。
【請求項９】
前記第２の勾配値が、他のサブセットのデータ点と関連付けられた他の勾配値より大きいことが決定されたことに基づいて、前記第４のデータ点と関連付けられた第２の符号化されたチャンクが前記ソースビデオシーケンスの別の符号化されたバージョンに含まれるべきであることを決定する工程を更に含む、請求項７記載のコンピュータによって実施される方法。
【請求項１０】
前記第１の１組の符号化されたチャンクが、第１のキャプチャ地点から連続的にキャプチャされた第１のシーケンスのビデオフレームと関連付けられており、第２の１組の符号化されたチャンクが、第２のキャプチャ地点から連続的にキャプチャされた第２のシーケンスのビデオフレームと関連付けられている、請求項１記載のコンピュータによって実施される方法。
【請求項１１】
プログラム指示がプロセッサによって実行された際に、該プロセッサを、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう構成するプログラム指示を格納したことを特徴とする非一過性のコンピュータ可読媒体。
【請求項１２】
システムであって、
ソフトウェアアプリケーションを格納したメモリと、
前記メモリに結合されたプロセッサと
を含み、
前記プロセッサが、前記ソフトウェアアプリケーションを実行した際に、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう構成されることを特徴とするシステム。
【請求項１３】
前記ソフトウェアアプリケーションを実行した際に、前記プロセッサが、
前記第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組のデータ点を生成する工程と、
１以上の凸包処理を行う工程と、
前記第１の勾配値を計算する工程と、
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう更に構成される、請求項１２記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願は、２０１７年７月１８日に出願された「ENCODING TECHNIQUE FOR OPTIMIZING DISTORTION AND BITRATE」という名称の米国仮特許出願第６２／５３４，１７０号による優先権を主張すると共に、本願は、２０１８年７月１２日に出願された「ENCODING TECHNIQUE FOR OPTIMIZING DISTORTION AND BITRATE」という名称の米国特許出願第１６／０３４，３０３号による優先権を主張する。これらの関連出願の主題を参照して本明細書に組み込む。
【技術分野】
【０００２】
本発明の実施形態は、一般的に、ビデオの符号化に関し、より具体的には、歪みおよびビットレートを最適化するための符号化技術に関する。
【背景技術】
【０００３】
ビデオストリーミングサービスは、或る範囲のそれぞれ異なるエンドポイント装置上で再生可能なメディアタイトルのライブラリへのアクセスを提供する。各エンドポイント装置は、利用可能な帯域幅および遅延等を含む異なる接続条件下で、ビデオストリーミングサービスに接続し得る。それに加えて、異なる装置の各々は、エンドユーザーに対してビデオコンテンツを出力するための異なるハードウェアを含み得る。例えば、所与のエンドポイント装置は、特定の画面サイズおよび特定の画面解像度を有するディスプレイ画面を含み得る。
【０００４】
典型的には、ビデオストリーミングサービスに接続するエンドポイント装置はエンドポイントアプリケーションを実行し、エンドポイントアプリケーションは、ビデオコンテンツライブラリ内にある所与のメディアタイトルについて、そのメディアタイトルの、エンドポイント装置へとストリーミングするための適切なバージョンを決定する。通常、所与のメディアタイトルのそれぞれ異なる各バージョンは、それぞれ異なるビットレートを用いて符号化されており、典型的には、そのメディアタイトルのそれぞれ異なるバージョンは、そのビデオコンテンツと関連付けられた互いに異なる解像度、倍率、および/または他のパラメータを有する。エンドポイント装置上でのメディアタイトルの再生中に、エンドポイントアプリケーションは、ネットワーク条件、ネットワーク接続の品質、およびエンドポイント装置のハードウェア仕様等の要因に基づいて、そのメディアタイトルの、エンドポイント装置にストリーミングされる適切なバージョンを選択する。
【０００５】
上述のように、上述の方法でストリーミングするためのメディアタイトルを準備するために、メディアタイトルは、複数の異なるビットレートを用いて符号化される。その際、符号化アプリケーションは、各符号化について、それぞれ異なる１組の符号化パラメータを用いて、メディアタイトル全体の「モノリシック」な符号化を個々に行う。それぞれ異なる符号化の各々は、符号化プロセスによってそのメディアタイトルの符号化されたバージョンに生じた歪みのレベルを客観的に示す、それぞれ異なる品質測定指標と関連付けられ得る。所与の符号化と関連付けられた品質測定指標は、典型的には、その符号化を生成するために用いられた符号化パラメータに依存する。例えば、他の符号化と比較して、高いビットレートを用いて生成された符号化は、他の符号化と比較して、より高い品質測定指標を有し得る。
【０００６】
複数の異なる符号化パラメータを用いてメディアタイトルを符号化することは、典型的には、複数の異なる計算リソースおよび複数の異なるストレージリソースを必要とする。例えば、高いビットレートおよび高い品質測定指標を有する符号化を生成することは、一般的に、低いビットレートおよび低い品質測定指標を有する符号化を生成することよりも、多くの計算リソース／ストレージリソースを消費する。従来の符号化アプリケーションは、その符号化についての特定の目標品質測定指標を満たすために、単一のモノリシックな符号化を生成するために、所与の１組の符号化パラメータを選択し得る。
【０００７】
しかし、この手法の1つの問題は、所与の目標品質測定指標を満たすために、メディアタイトルの全ての部分が同じ符号化パラメータを必要とするわけではないことであり、それでも依然として、従来の符号化アプリケーションは、メディアタイトル全体について同じ符号化パラメータを用いる。その結果、従来の方法で符号化されたメディアタイトルは、目標品質測定指標を満たすために、そのメディアタイトルの一部は同じ測定指標を満たすためにそれらのリソースを必要としないにもかかわらず、過剰な計算リソースおよびストレージリソースを消費し得る。この非効率性は、計算リソースおよびストレージリソースを不必要に浪費する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のように、当技術分野においては、ビデオシーケンスを符号化するためのより効率的な技術が必要である。
【課題を解決するための手段】
【０００９】
本発明の一実施形態は、ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、第１のサブセットのデータ点に含まれる第１のデータ点と第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、第１の勾配値に基づいて、第１のデータ点と関連付けられた第１の符号化されたチャンクが、ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程とを含む、コンピュータによって実施される方法を述べる。
【発明の効果】
【００１０】
本開示の技術の、従来技術に対する少なくとも１つの技術的改善は、符号化されたチャンクの粒度において最適化処理を行うことにより、従来の符号化技術と関連付けられた符号化の非効率性が低減されることである。その結果、ソースビデオシーケンスの最終的な符号化されたバージョンを、目標とするビットレートについての向上した視覚的品質で、エンドポイント装置にストリーミングできる。また、それとは逆に、ソースビデオシーケンスの最終的な符号化されたバージョンを、目標とする視覚的品質についての低減されたビットレートで、エンドポイント装置にストリーミングできる。
【００１１】
本発明の上述の特徴を詳細に理解できるように、上記で簡潔に要約した本発明を、実施形態を参照してより具体的に説明する。実施形態の幾つかが、添付の図面に示されている。しかし、添付の図面は、本発明の典型的な実施形態のみを示しており、従って、本発明の範囲を限定するものとは見なされず、本発明は、他の等しく効果的な実施形態を認め得ることを留意されたい。
【図面の簡単な説明】
【００１２】
【図１Ａ】本発明の１以上の態様を実装するよう構成されたクラウドコンピューティング環境を示す
【図１Ｂ】本発明の様々な実施形態による、図１Ａの符号化エンジンのより詳細な図
【図２】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法でビデオシーケンスを複数のショットシーケンスにカットするかを示す
【図３】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で図２のショットシーケンスを処理してデータセットを生成するかを示す
【図４】本発明の様々な実施形態による、図３の処理パイプラインのより詳細な図
【図５Ａ】本発明の様々な実施形態による、図３のデータセットに基づいて生成されたビットレート対品質のグラフ
【図５Ｂ】本発明の様々な実施形態による、図３のデータセットに基づいて生成された凸包データ点のグラフ
【図６】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で図５Ｂの凸包データ点を生成するかを示す
【図７】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、複数の凸包を用いて、図２のビデオシーケンスの複数の異なるバージョンを生成するかを示す
【図８Ａ】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするかをより詳細に示す
【図８Ｂ】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするかをより詳細に示す
【図８Ｃ】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするかをより詳細に示す
【図８Ｄ】本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするかをより詳細に示す
【図９】本発明の様々な実施形態による、図８Ａ〜図８Ｄに示されている符号化されたビデオシーケンスについて生成された凸包データ点のグラフ
【図１０】本発明の様々な実施形態による、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするための方法のステップのフロー図
【図１１】本発明の様々な実施形態による、リサンプリングされたショットシーケンスを処理することにより１組のデータ点を生成する方法のステップのフロー図
【図１２】本発明の様々な実施形態による、１組の符号化されたビデオシーケンスを生成するための方法のステップのフロー図
【発明を実施するための形態】
【００１３】
以下の説明において、本発明のより完全な理解を提供するために、多くの具体的な詳細が述べられる。しかし、当業者には、これらの具体的な詳細の１以上を含まずとも本発明が実施され得ることが自明であろう。他の例では、本発明を曖昧にすることを回避するために、周知の特徴については説明しない。
【００１４】
上述のように、従来の符号化技術は、ビデオシーケンスの「モノリシック」な符号化を行うことと関連付けられた特有の非効率性という短所がある。これらの非効率性は、ビデオシーケンスの一部は、異なる符号化パラメータを用いて符号化されても同じ品質測定指標を満たし得るという事実にもかかわらず、従来の符号化技術は、所与の品質測定指標を満たすために、ビデオシーケンスの全ての部分を同じ符号化パラメータを用いて符号化することを理由として生じる。
【００１５】
この問題に対処するために、本発明の実施形態は、ソースビデオシーケンス内の異なるショットシーケンスを、所与のレベルの歪みについてビットレートを最適化するそれぞれ異なる符号化パラメータを用いて符号化するよう構成された符号化エンジンを含む。ショットシーケンスを符号化する際、符号化エンジンは、ショットシーケンスを或る範囲の複数の異なる解像度にリサンプリングし、次に、或る範囲の品質パラメータを用いて、リサンプリングされた各シーケンスを符号化する。次に、符号化エンジンは、各符号化されたシーケンスをソースビデオシーケンスの元の解像度にアップサンプリングし、得られたアップサンプリングされたシーケンスについての品質測定指標を計算する。各ショットシーケンスについてのアップサンプリングされたシーケンスおよびそれに対応する品質測定指標に基づいて、符号化エンジンは、ソースビデオシーケンスの複数の異なる符号化されたバージョンを生成する。そのような各バージョンは、潜在的にそれぞれ異なる符号化パラメータを用いて符号化された複数のショットシーケンスの複合体である。
【００１６】
この手法の長所は、所与の品質測定指標を満たすために特定の符号化パラメータを必要とするソースビデオシーケンスの部分が、それらの特定の符号化パラメータを正確に用いて符号化されることである。更に、ソースビデオシーケンスの他の部分は、他の適切に選択された符号化パラメータを用いて符号化され得る。従って、ソースビデオシーケンスの符号化されたバージョンが、より効率的な方法で生成される。
【００１７】
システムの概要
図１Ａは、本発明の１以上の態様を実装するよう構成されたクラウドコンピューティング環境を示す。図示されているように、システム１００は、コンピュータクラウド１３０に結合されたホストコンピュータ１１０を含む。ホストコンピュータ１１０は、共に結合されたプロセッサ１１２、入出力（Ｉ／Ｏ）装置１１４、およびメモリ１１６を含む。
【００１８】
プロセッサ１１２は、データを処理し、プログラムコードを実行するよう構成された任意の技術的に実行可能な形態の処理装置であり得る。プロセッサ１１２は、例えば、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、そのような装置の任意の技術的に実行可能な組合せ等であり得る。
【００１９】
Ｉ／Ｏ装置１１４は、入力を受信するよう構成された装置（例えば、キーボード、マウス等を含む）を含み得る。Ｉ／Ｏ装置１１４は、出力を提供するよう構成された装置（例えば、ディスプレイ装置、スピーカー等を含む）も含み得る。Ｉ／Ｏ装置１１４は、入力を受信および出力を提供するよう構成された装置（例えば、タッチスクリーン、ユニバーサルシリアルバス（ＵＳＢ）ポート等を含む）を更に含み得る。
【００２０】
メモリ１１６は、データおよびソフトウェアアプリケーションを格納するよう構成された任意の技術的に実現可能なストレージ媒体を含み得る。メモリ１１６は、例えば、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）モジュール、読み取り専用メモリ（ＲＯＭ）等であり得る。メモリ１１６は、ホスト符号化エンジン１１８およびデータベース１２０を含む。
【００２１】
ホスト符号化エンジン１１８は、プロセッサ１１２によって実行された際に、データベース１２０および／または外部ストレージリソースに格納されたメディアコンテンツを用いた符号化処理を行うソフトウェアアプリケーションである。ホスト符号化エンジン１１８は、より詳細に後述される様々なクラウド符号化エンジンと相互運用されるよう構成される。
【００２２】
コンピュータクラウド１３０は、複数のクラウドコンピュータ１４０（０）〜１４０（Ｎ）を含む。任意のクラウドコンピュータ１４０は、物理的に別個のコンピューティング装置またはコンピューティング装置の仮想化されたインスタンスであり得る。各クラウドコンピュータ１４０は、共に結合されたプロセッサ１４２、Ｉ／Ｏ装置１４４、およびメモリ１４６を含む。所与のプロセッサ１４２は、データを処理し、プログラムコードを実行するよう構成された、任意の技術的に実現可能な形態の処理装置（ＣＰＵ、ＧＰＵ、ＡＳＩＣ、ＦＰＧＡ、そのようなユニットの任意の技術的に実現可能な組合せ等を含む）であり得る。所与の１組のＩ／Ｏ装置１４４は、上述のＩ／Ｏ装置１１４と同様に、入力を受信するよう構成された装置（例えば、キーボード、マウス等を含む）を含み得る。各メモリ１４６は、データおよびソフトウェアアプリケーション（クラウド符号化エンジン１４８およびデータベース１５０を含む）を格納するよう構成されたストレージ媒体である。
【００２３】
クラウド符号化エンジン１４８（０）〜１４８（Ｎ）は、符号化処理の様々な部分を行うために、ホスト符号化エンジン１１８と相互運用されるよう構成される。一般的に、ホスト符号化エンジン１１８は、クラウド符号化エンジン１４８（０）〜１４８（Ｎ）の動作を調和させ、それらのエンジンへの処理タスクの分配、各エンジンからの処理済みデータの収集等のタスクを行い得る。クラウドコンピューティングの当業者には、クラウド符号化エンジン１４８（０）〜１４８（Ｎ）が互いに略並列に動作し得ることが理解されよう。従って、ホスト符号化エンジン１１８は、クラウド符号化エンジン１４８を、別々のタスクを同時に実行するよう構成することにより、複雑な符号化タスクを効率的に行い得る。一般的な事項として、ホスト符号化エンジン１１８およびクラウド符号化エンジン１４８は、図１Ｂに関してより詳細に後述するように、分散ソフトウェアエンティティ内のそれぞれ異なるモジュールを表す。
【００２４】
図１Ｂは、本発明の様々な実施形態による、図１Ａの符号化エンジンのより詳細な図である。図示されているように、符号化エンジン１６０は、ホスト符号化エンジン１１８およびクラウド符号化エンジン１４８（０）〜１４８（Ｎ）を含む。一般的な事項として、符号化エンジン１６０は、ホスト符号化エンジン１１８およびクラウド符号化エンジン１４８の実行を介して１以上の異なる符号化処理を行うよう構成された分散ソフトウェアエンティティを構成する。具体的には、符号化エンジン１６０は、ソースビデオシーケンス１７０を処理して、１組の符号化されたビデオシーケンス１８０を生成する。ソースビデオシーケンス１７０は、ビデオストリーミングサービスと関連付けられたコンテンツライブラリに含まれ得るメディアタイトルである。各符号化されたビデオシーケンス１８０は、それぞれ異なる（および潜在的に変化する）符号化パラメータで符号化されたそのメディアタイトルのそれぞれ異なるバージョンである。
【００２５】
符号化処理を行うために、符号化エンジン１６０は、ソースビデオシーケンス１７０を前処理することにより、本質とは無関係な画素を除去し、次に、ソースビデオシーケンス１７０を複数のショットシーケンスにカットする。各ショットシーケンスは、所与のカメラまたはキャプチャ地点から連続的にキャプチャされたフレームを含む。この手順については、図２に関して述べる。次に、符号化エンジン１６０は、各ショットシーケンスを１以上の異なる解像度にリサンプリングし、リサンプリングされた全てのシーケンスを処理してデータセットを生成する。リサンプリング処理については、図３に関して述べる。リサンプリングされたシーケンスに基づくデータセットの生成については、図４に関して述べる。次に、符号化エンジン１６０は、このデータセットに基づいて、図５Ａ〜図５Ｂおよび図６に関して述べるように、所与のレベルの歪みについてビットレートを最大化するデータ点の凸包を生成する。全てのショットシーケンスにわたる全ての凸包点に基づいて、符号化エンジン１６０は、１組の符号化されたビデオシーケンス１８０を生成する。図７〜図９に関して述べるように、これらの符号化されたビデオシーケンスは、歪みおよびビットレートを最適化する。図３〜図９に関して述べる符号化処理は、図１０〜図１１に関する一連のステップとしても表わされている。
【００２６】
歪みおよびビットレートの最適化
図２は、本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法でビデオシーケンスを複数のショットシーケンスにカットするかを示す。図１〜図２に関して上述したように、符号化エンジン１６０は、符号化処理を行うことにより、ソースビデオシーケンス１７０の複数の異なる符号化されたバージョンを生成するよう構成され、異なるバージョンの各々は、所与のビットレートについて歪みを最小化し、並びに／または、歪みおよびビットレートを最適化する。この符号化処理の最初のステップが図２に示されている。図示されているように、ショット解析器２００は、ソースビデオシーケンス１７０を処理することによりショットシーケンス２２０（０）〜２２０（Ｐ）を生成するよう構成される。ショット解析器２００は、符号化エンジン１６０内に含まれるソフトウェアモジュールである。図示されている例では、ソースビデオシーケンス１７０は、４０９６×２０４８の解像度、即ち４０９６画素の幅×２０４８画素の高さを有するビデオのフレームを含む。一般的に、ソースビデオシーケンス１７０の解像度は、そのビデオシーケンスと関連付けられた特定の配信フォーマットに対応する。
【００２７】
ショット解析器２００は、各ショットシーケンス２２０を、ソースビデオシーケンス１７０と同じ解像度を有するように生成する。しかし、各ショットシーケンス２２０は、それぞれ異なる「ショット」に対応する異なるシーケンスのビデオフレームを含む。本開示の文脈において、「ショット」とは、単一のカメラまたはカメラの仮想表現（例えば、コンピュータ・アニメーション・ビデオシーケンスの場合）から連続的にキャプチャされたフレームのシーケンスであり得る。また、ショットシーケンス２２０を生成する際、ショット解析器２００は、ソースビデオシーケンス１７０から、本質とは無関係な画素を除去し得る。例えば、ショット解析器２００は、ソースビデオシーケンス１７０の境界部分に沿った黒いバーに含まれる画素を除去し得る。
【００２８】
ショット解析器２００は、多くの異なる技術を用いて、ソースビデオシーケンス１７０のどのフレームが、各異なるショットに対応するかを決定し得る。例えば、ショット解析器２００は、２以上のシーケンシャルなフレームのサブセットにわたって有意に変化しない画素値の連続した分布を有する１組のシーケンシャルなフレームを識別し得る。或いは、ショット解析器２００は、各フレーム内に存在する特徴を比較して、類似の特徴を有するシーケンシャルなフレームを識別し得る。当業者には、ソースビデオシーケンスを構文解析して別々のショットシーケンスにするための多くの技術が存在することが理解されよう。このようにしてソースビデオシーケンス１７０を構文解析したら、符号化エンジン１６０は、図３に関して後述するように、各ショットシーケンス２２０を処理して、それぞれ異なるデータセットを生成する。
【００２９】
図３は、本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、図２のショットシーケンスを処理してデータセットを生成するかを示す。図示されているように、リサンプラー３００は、ショットシーケンス２２０を処理して、リサンプリングされたシーケンス３２０（０）〜３２０（Ｍ）を生成する。図示されているように、各リサンプリングされたシーケンス３２０はそれぞれ異なる解像度を有する。リサンプリングされたシーケンス３２０（０）の解像度は４０９６×２０４８であり、リサンプリングされたシーケンス３２０（１）の解像度は２０４８×１０２４であり、リサンプリングされたシーケンス２２０（Ｍ）の解像度は２５６×１４４である。１組のリサンプリングされたシーケンス３２０は、ショットシーケンス２２０と関連付けられた解像度ラダー３３０に対応する。
【００３０】
リサンプラー３００は、解像度の任意の分布を含むように解像度ラダー３３０を生成し得る。しかし、実際上は、リサンプラー３００は、まず、リサンプリングされたシーケンス３２０（０）を、ショットシーケンス２２０（またはソースビデオシーケンス１７０）と同じ解像度を有するように生成し、次に、後続の各リサンプリングされたシーケンス３２０（１）等を、その前の解像度の一定の分数である解像度を有するように生成する。実際上は、所与のリサンプリングされたシーケンス３２０（Ｈ）の解像度とその前のリサンプリングされたシーケンス３２０（Ｈ−１）の解像度との比率は約１．５である。
【００３１】
しかし、様々な実施形態では、より密な解像度ラダー（即ち、所与のリサンプリングされたシーケンス３２０（Ｈ）の解像度とその前のリサンプリングされたシーケンス３２０（Ｈ−１）の解像度との比率が１．５未満（例えば、１．４１４もしくは１．２６等））が用いられてもよく、または、より粗い解像度ラダー（即ち、所与のリサンプリングされたシーケンス３２０（Ｈ）の解像度とその前のリサンプリングされたシーケンス３２０（Ｈ−１）の解像度との比率が１．５以上（例えば、２．０もしくは３．０等））が用いられてもよい。解像度ラダー３３０の密度は、所望の品質レベルに均一にわたり得るように、ビデオショットの特性にも依存し得る。解像度ラダーの密度を決定するために、更なる制約（例えば、特定のシーケンスの符号化に費やすことが所望されるＣＰＵの量等）が用いられ得る。
【００３２】
解像度ラダー３３０を生成したら、次に、符号化エンジン１６０は、１組の並列処理パイプライン３４０を実行して、異なるリサンプリングされたシーケンス３２０の各々を処理する。各処理パイプライン３４０は、各処理パイプライン３４０に入力されたリサンプリングされたシーケンス３２０に基づいて、データ点３５０の集合を生成する。処理パイプライン３４０（０）はデータ点３５０（０）を生成し、処理パイプライン３５０（１）はデータ点３５０（１）を生成し、全ての処理パイプライン３４０について同様の処理が行われる。次に、符号化エンジン１６０は、そのような全てのデータ点を組合せてデータセット３６０を生成する。符号化エンジン１６０は、この処理を、全てのショットシーケンス２２０（０）〜２２０（Ｐ）について行うので、符号化エンジン１６０は、Ｐ個の異なるデータセット３６０を生成する。例示的な処理パイプライン３４０については、図４に関してより詳細に後述すると共に、データセット３６０については、図５Ａ〜図５Ｂに関して更に説明する。
【００３３】
図４は、本発明の様々な実施形態による、図３の処理パイプラインのより詳細な図である。図示されているように、処理パイプライン３４０は、リサンプリングされたシーケンス３２０を受信し、１組の並列サブパイプライン４５０（０）〜４５０（Ｌ）によって、データ点３５０を生成する。各サブパイプライン４５０は、エンコーダ４００、デコーダ４１０、アップサンプラー４２０、および測定指標解析器４３０を含む。サブパイプライン４５０（０）はエンコーダ４００（０）、デコーダ４１０（０）、アップサンプラー４２０（０）、および測定指標解析器４３０（０）を含み、サブパイプライン４５０（１）はエンコーダ４００（１）、デコーダ４１０（１）、アップサンプラー４２０（１）、および測定指標解析器４３０（１）を含み、全てのサブパイプライン４５０について同様になっている。各サブパイプライン４５０内のエンコーダ４００およびデコーダ４１０は、アドバンスト・ビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）、またはＶＰ９等を含む、任意の技術的に実行可能な符号化／復号化アルゴリズムを実装し得る。
【００３４】
処理パイプライン３４０の実行中、各エンコーダ４００（０）〜４００（Ｌ）は、まず、それぞれ異なる量子化パラメータ（ＱＰ）を用いて、リサンプリングされたシーケンス３２０を符号化する。エンコーダ４００（０）は、ＱＰ＝０を用いて、リサンプリングされたシーケンス３２０を符号化し、エンコーダ４００（１）は、ＱＰ＝１を用いて、リサンプリングされたシーケンス３２０を符号化し、エンコーダ４００（Ｌ）は、ＱＰ＝Ｌを用いて、リサンプリングされたシーケンス３２０を符号化する。一般的に、エンコーダＬの数は、エンコーダ４００によって実装される所与のアルゴリズムについての利用可能なＱＰの数に対応する。エンコーダ４００がｘ２６４実装を用いてＡＶＣ符号化アルゴリズムを実装する実施形態では、エンコーダ４００は、ＱＰの代わりに、それぞれ異なる固定レート係数（ＣＲＦ）を用いて、上述の符号化処理を行い得る。様々な実施形態では、エンコーダ４００は、ＱＰまたはＣＲＦだけでなく、任意の符号化パラメータを変更し得る。
【００３５】
重要なこととして、エンコーダ４００によって生成された、符号化されたリサンプリングされたシーケンスは、最終的には、図２Ｂに示されている符号化されたビデオシーケンス１８０内に含まれ得る。本開示の文脈において、これらの符号化されたリサンプリングされたシーケンスは、本明細書においては「チャンク」として参照され得る。「チャンク」は、一般的に、特定の１組の符号化パラメータを用いて符号化されたビデオフレームのシーケンスを含む。実際上は、各チャンクは特定の解像度でリサンプリングされ、次に、所与のＱＰを用いて符号化される。また、各チャンクは、一般的に、所与のショットシーケンスから得られる。しかし、当業者には、ビデオ符号化の文脈における「チャンク」は、ＧＯＰ（group of pictures）、フレームのシーケンス、フレームの複数のシーケンス等を含む様々な異なる構造を表し得ることが理解されよう。
【００３６】
エンコーダ４００が、上述のように、それぞれ異なるＱＰを用いて、リサンプリングされたシーケンス３２０を符号化したら、各サブパイプライン４５０は、それと比較的同様に進行する。デコーダ４１０は、符号化されたシーケンスを受信し、次に、それらのシーケンスを復号化する。従って、アップサンプラー４２０（０）〜４２０（Ｌ）を介して出力される各ビデオシーケンスは、同じ解像度を有する。しかし、これらのビデオシーケンスは、異なるＱＰを用いて符号化されているため、異なる品質を有し得る。
【００３７】
一実施形態において、アップサンプラー４２０は、復号化されたシーケンスを、或るクラスのエンドポイント装置の表示特性に関連し得る目標解像度にアップサンプリングする。例えば、特定のビデオは３８４０×２１６０の解像度で配信され得るが、１９２０×１０８０の解像度を有する多数のディスプレイによって消費されることが意図され得る。別のクラスのエンドポイント装置（例えば、ラップトップコンピュータ等）は、同じビデオを１２８０×７２０の解像度で表示することが予期される。更に別のクラスのエンドポイント装置（例えば、タブレット装置またはスマートフォン装置）は、同じビデオを９６０×５４０の解像度で表示することが予期される。これらの異なるクラスのエンドポイント装置のうちの１つについて考える場合、それに対応して、復号化されたシーケンスは、品質を評価するために、これらの全ての目標解像度にアップサンプリングされ得る。
【００３８】
測定指標解析器４３０は、アップサンプリングされたシーケンスを解析することにより、各シーケンスについての客観的品質測定指標（ＱＭ）を生成する。測定指標解析器４３０は、例えば、ＶＭＡＦ（video multimethod assessment fusion）アルゴリズムを実装して、各アップサンプリングされたシーケンスについてのＶＭＡＦスコアを生成し得る。ＶＭＡＦスコア等の多くのビデオ品質測定指標は、複数の異なる目標解像度で計算可能ではあるが、複数の異なる解像度で行われた符号化間における品質を比較する場合には、復号化後のリサンプリングについては同じ目標解像度を用いる必要があることを明確にすべきである。以下の議論においては、アップサンプリングおよび品質測定指標の計算のためのそのような１つの解像度、例えば、一般的なＨＤ解像度である１９２０×１０８０について考える。
【００３９】
次に、各測定指標解析器４３０は、リサンプリングされたシーケンス３２０の解像度、それぞれのエンコーダ４００によって実装されたＱＰ、および計算されたＱＭを含む、それぞれ異なるデータ点４４０を生成する。従って、各異なるＱＰについて、処理パイプライン３４０は、データ点４４０（０）〜４４０（Ｌ）として示されている別々のデータ点を生成する。重要なこととして、各データ点４４０は、所与のショットシーケンス２２０の特定のリサンプリング／符号化されたバージョンに対応する。より詳細に後述するように、符号化エンジン１６０は、関連付けられたデータ点４００に基づいて、符号化されたビデオシーケンス１８０に含めるための各ショットシーケンス２２０のリサンプリング／符号化されたバージョンを選択する。図３にも示されているように、処理パイプライン３４０は、そのような全てのデータ点４４０を集めてデータ点３５０にする。
【００４０】
図３に戻ると、符号化エンジン１６０は、複数の異なるリサンプリングされたシーケンス３２０（０）〜３２０（Ｍ）の各々について、それぞれ異なる１組のデータ点３５０（０）〜３５０（Ｍ）を生成し、これらのデータ点３５０を集めてデータセット３６０にする。従って、エンコーダ１６０は、Ｍ個の異なるリサンプリングされたシーケンス３２０とＬ個の異なるＱＰとの各組合せについてのデータセット３６０内のデータ点を生成するので、データセット３６０はＭ＊Ｌ個のデータ点を含む。必ずしも各解像度について同じ数のＱＰまたは同じＱＰ値を用いる必要はなく、むしろ、各ショットに適した完全にカスタマイズされた数のＱＰおよびＱＰ値を用いる。次に、符号化エンジン１６０は、図５Ａ〜図５Ｂに関して後述する処理動作を行うことにより、データセット３６０内の、歪みおよび／またはビットレートを最小化する特定のデータ点を識別する。
【００４１】
凸包分析
図５Ａは、本発明の様々な実施形態による、図３のデータセットに基づいて生成されたビットレート対品質のグラフである。図示されているように、グラフ５００は、ビットレート軸５１０および品質測定指標（ＱＭ）軸５２０を含む。グラフ５００は、ビットレート軸５１０およびＱＭ軸５２０に対してプロットされた品質曲線５０２、５０４、および５０６も含む。図示されている各曲線は、特定のショットシーケンス２２０についてのそれぞれ異なる解像度の符号化に対応しており、従って、特定の１組のデータ点３５０から得られたものであり得、所与の１組内の各データ点４４０は、解像度、ＱＰ、およびＱＭの特定の組合せに対応する。符号化エンジン１６０は、各データ点４４０の解像度を所与のビットレートに合わせて変換することにより、曲線５０２、５０４、および５０６に含まれるデータ点を生成する。符号化エンジン１６０は、例えば、所与の解像度に必要なビットの総数を、関連付けられたショットシーケンス３２０の長さで除算し得る。
【００４２】
符号化エンジン１６０は、図５Ａにプロットされているデータセット１６０を再処理して、ＱＭを歪み測定指標で置き換えるよう構成される。符号化エンジン１６０は、ＱＭ値を反転すること、一定の値からＱＭ値を減算すること、または、品質を歪みに変換するための他の公知の技術を行うことにより、所与の歪み測定指標を計算し得る。次に、符号化エンジン１６０は、図５Ｂに関して後述するように、変換された値に基づいて凸包を生成する。
【００４３】
図５Ｂは、本発明の様々な実施形態による、図３のデータセットに基づいて生成された凸包データ点のグラフである。図示されているように、グラフ５５０はビットレート軸５６０および歪み軸５７０を含む。符号化エンジン１６０は、ビットレート軸５６０および歪み軸５７０に対して歪み曲線５５２、５５４、および５５６をプロットする。次に、符号化エンジン１６０は、全ての点が境界の片側（このケースでは境界の右側）になる境界であって、凸包上の任意の２つの連続した点を直線でつなぐと残りの全ての点が同じ側に残る境界を形成する、全ての曲線にわたる点を識別することにより、凸包点５８０を計算する。このようにして、符号化エンジン１６０は、各ショットシーケンス２２０について凸包点５８０を生成し得る。当業者には、数学の分野においては凸包を生成するための多くの技術が周知であり、そのような技術の全てが、凸包点５８０を生成するために実装され得ることが理解されよう。一実施形態において、符号化エンジン１６０は、関連付けられたソースビデオシーケンス１７０の様々なパラメータに基づいて凸包点５８０を推定するために、機械学習技術を適用する。このようにして、これまでに述べた計算の一部が合理化および／または完全に回避され得る。符号化エンジン１６０は、図６に関して後述される一連の処理段階によって、図５Ａ〜図５Ｂに関して説明された処理を行う。
【００４４】
図６は、本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で図５Ｂの凸包データ点を生成するかを示す。図示されているように、歪み変換器６００および凸包解析器６２０は、協働してデータセット３６０を処理することにより、凸包点５８０を生成する。動作においては、歪み変換器６００はデータセット３６０を受信し、次に、そのデータセットに含まれているＱＭ値を歪み値に変換する。次に、凸包解析器６２０は、そのデータセット３６０についての凸包を計算することにより、凸包点５８０を生成する。
【００４５】
このようにして、符号化エンジン１６０は、各ショットシーケンス３２０についての凸包点５８０を、関連付けられたデータセット３６０に基づいて計算する。従って、符号化エンジン１６０は、Ｐ個の異なるショットシーケンス３２０に基づいて、Ｐ個の組の凸包点５８０を生成する。ここでも、各組の凸包点５８０は、１つのショットシーケンスについて、そのショットシーケンスの特定のリサンプリングされた符号化されたバージョンについての歪みおよびビットレートを記述するデータ点を含む。そのバージョンは、所与の解像度でリサンプリングされて、所与のＱＰを用いて符号化される。符号化エンジン１６０は、Ｐ個のショットシーケンス３２０の全てについて生成された全ての凸包５８０を集め、次に、図７に関してより詳細に後述するように、更なる処理を行って符号化されたビデオシーケンス１８０を生成する。
【００４６】
トレリス反復による符号化されたビデオシーケンスのアセンブル
図７は、本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、複数の凸包を用いて、図２のビデオシーケンスの複数の異なるバージョンを生成するかを示す。図示されているように、トレリス反復子７００は凸包点５８０（０）〜５８０（Ｐ）を受信し、次に、シーケンストレリス７１０を繰り返し更新することにより、シーケンスＲＤ点７２０を生成する。トレリス反復子７００は、符号化エンジン１６０内に含まれるソフトウェアモジュールである。シーケンストレリス７１０は、図８Ａ〜図８Ｄに関してより詳細に後述されているデータ構造である。シーケンスＲＤ点７２０は、リサンプリングされた符号化されたシーケンスの複数の異なる組合せについて生成されたビットレート−歪み（ＲＤ）点を含む。
【００４７】
各シーケンスＲＤ点７２０は、それぞれ異なる符号化されたビデオシーケンス１８０に対応する。各符号化されたビデオシーケンス１８０は、上述のリサンプリングされた符号化されたショットシーケンスのそれぞれ異なる組合せを含む。ストリーミングアプリケーション７３０は、シーケンスＲＤ点７２０に基づいて、符号化されたビデオシーケンス１８０をエンドポイント装置へとストリーミングするよう構成される。図９に関してより詳細に後述するように、各符号化されたビデオシーケンス１８０は、そのビデオシーケンスと関連付けられた所与の平均ビットレートについて、ビデオシーケンス内の全てのショットシーケンスにわたる（平均）歪みを最小化する。トレリス反復子７００は、より詳細に後述される技術を用いて、これらの異なるシーケンスを生成する。
【００４８】
図８Ａ〜図８Ｄは、本発明の様々な実施形態による、図１Ｂの符号化エンジンが、どのような方法で、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするかをより詳細に示す。図８Ａ〜図８Ｄに示されているように、シーケンストレリス７１０はショット軸８００およびビットレート軸８１０を含む。シーケンストレリス７１０は複数の列の凸包点５８０も含み、各列は特定のショットシーケンスに対応する。例えば、シーケンストレリス７１０に含まれる０番目の列は、凸包点５８０（０）に対応する。任意の列内の凸包点は、昇順のビットレート（および、構造により、降順の歪み）に従ってランク付けされる。また、凸包点は、ビットレートの関数として（大きさが）減少する負の勾配を有することが保証される。
【００４９】
便宜上、凸包点５８０は、以下のシステムに従って個別にインデックス付けされる。所与の点について、第１の数はショットシーケンスのインデックスであり、第２の数は、それらの凸包点のビットレートランキングへのインデックスである。例えば、凸包の点００は、０番目のショットシーケンスおよび第０位にランク付けされたビットレート（このケースでは最低ランクのビットレート）に対応する。同様に、凸包点４３は、４番目のショットシーケンスおよび第３位にランク付けされたビットレート（このケースでは最高ランクのビットレート）に対応する。
【００５０】
トレリス７１０内に含まれる各凸包点は、上述のように、ショットシーケンス２２０のそれぞれ異なるリサンプリングされた符号化されたバージョンに対応する。符号化エンジン１６０は、ショットシーケンス２２０のこれらのリサンプリングされた符号化されたバージョンを組み合わせることにより、図２Ｂに示されている符号化されたビデオシーケンス１８０を生成する。符号化エンジン１６０は、シーケンストレリス７１０を実施して、この組み合わせ技術を繰り返し行う。
【００５１】
図８Ａ〜図８Ｄの各々は、トレリス反復子７００によって、それぞれ異なる反復において生成された、シーケンストレリス７１０のそれぞれ異なるバージョンを示す。図８Ａは、初期状態におけるシーケンストレリス７１０（０）を示す。ここでは、トレリス反復子７００は、凸包点００、１０、２０、３０、および４０を含む凸包点のシーケンス８２０（０）を生成する。これらの最初に選択された凸包点は、最も低いビットレートおよび最も大きい歪みを有し、従って、それぞれの列の一番下にある。シーケンス８２０（０）に基づいて、トレリス反復子７００は、凸包点００、１０、２０、３０、および４０の各々と関連付けられた、リサンプリングされた符号化されたショットシーケンス２２０を含む符号化されたビデオシーケンス１８０を生成する。トレリス反復子７００は、その符号化されたビデオシーケンス１８０に基づいて、シーケンスＲＤ点７２０（０）も生成する。
【００５２】
次に、トレリス反復子７１０は、シーケンス８２０（０）内の各凸包点について、その凸包点と、その上側において隣接する凸包点との間における、ビットレートに関する歪みの変化率を計算する。例えば、トレリス反復子７１０は、ノード００と０１、１０と１１、２０と２１、３０と３１、および４０と４１との間における、ビットレートに関する歪みの変化率を計算し得る。所与のリサンプリングされた符号化されたショットシーケンス２２０と関連付けられた凸包点について計算された変化率は、その凸包点における、そのショットシーケンスと関連付けられた歪み曲線の導関数を表す。
【００５３】
トレリス反復子７１０は、大きさが最大の導関数を選択し、次に、その導関数と関連づけられた上側において隣接するものを、後続のシーケンス８２０に含めるために選択する。例えば、図８Ｂにおいて、トレリス反復子７００は、凸包点３０と関連付けられた導関数が最大であり、従って、シーケンス８２０（１）に凸包点３１（凸包点３０の上側において隣接するもの）を含めることを決定する。シーケンス８２０（１）に基づいて、トレリス反復子７００は、凸包点００、１０、２０、３１、および４０の各々と関連付けられた、リサンプリングされた符号化されたショットシーケンス２２０を含む符号化されたビデオシーケンス１８０を生成する。次に、トレリス反復子７１０は、その符号化されたビデオシーケンス１８０に基づいて、シーケンスＲＤ点７２０（１）を生成する。トレリス反復子７１０は、この技術を繰り返し行い、それにより、図８Ｃ〜図８Ｄに示されているように、トレリス７１０を昇る。
【００５４】
図８Ｃでは、トレリス反復子７００は、凸包点１０と関連付けられた導関数が他の導関数と比較して最大であることを決定し、次に、シーケンス８２０（２）に含めるために凸包点１１を選択する。シーケンス８２０（２）に基づいて、トレリス反復子７００は、凸包点１１、１０、２０、３１、および４０の各々と関連付けられた、リサンプリングされた符号化されたショットシーケンス２２０を含む符号化されたビデオシーケンス１８０を生成する。トレリス反復子７００は、その符号化されたビデオシーケンス１８０に基づいて、ＲＤ点７２０（２）も生成する。図８Ｄに示されているように、トレリス反復子７００はこの処理を、トレリス反復７１０（Ｔ）と関連付けられたシーケンス８２０（Ｔ）を生成するまで継続する。このようにして、トレリス反復子７００は、ビットレートが増加すると共に歪みが減少する単一の凸包点を選択することにより、シーケンス８２０を徐々に改善し、それにより、ビットレートが増加すると共に歪みが減少する符号化されたビデオシーケンス１８０の集合を生成する。
【００５５】
一実施形態において、トレリス反復子７００は、終了条件を作成するために、トレリス７１０を昇る前に凸包点を追加する。その際、トレリス反復子７００は、最大のビットレートを有する凸包点を複製することにより、最後から２番目の凸包点と最後の凸包点との間の変化率を０にし得る。この０の変化率が全てのショットについて検出されたときに、即ち、変化率の最大の大きさが正確に０であるときに、トレリス反復子７００は終了条件を識別して、反復を停止する。
【００５６】
ここで再び図７を参照すると、トレリス反復子７００は、上述のトレリス技術によって、図８Ａ〜図８Ｄに示されているシーケンス８２０に対応する符号化されたビデオシーケンス１８０を生成する。トレリス反復子７００は、歪みを減少させると共にビットレートを増加させるために、昇りながらシーケンス８２０を生成するので、符号化されたビデオシーケンス１８０は、高い歪みおよび低いビットレートから、低い歪みおよび高いビットレートまでの範囲にわたる。各シーケンスＲＤ点７２０は、所与の符号化されたビデオシーケンス１８０についての歪みおよびビットレートを提供し、これらのシーケンスＲＤ点７２０は、図９に関して後述するように、凸包を生成するためにプロットされ得る。
【００５７】
図９は、本発明の様々な実施形態による、図８Ａ〜図８Ｄに示されているビデオシーケンスの複数の異なるバージョンについて生成された凸包データ点のグラフである。図示されているように、グラフ９００は、ビットレート軸９１０および歪み軸９２０を含む。ビットレート軸９１０および歪み軸９２０に対して曲線９３０がプロットされている。曲線９３０は、図８Ａ〜図８Ｄに関して上述したトレリス技術によって生成された、符号化ビデオシーケンス１８０に対応するシーケンスＲＤ点７２０の集合に基づいて生成され得る。従って、曲線９３０は、全ての符号化されたビデオシーケンス１８０にわたるビットレートの関数としての歪みを表す。ビットレート９１２および歪み９２２に対応する例示的なシーケンスＲＤ点７２０が示されている。
【００５８】
曲線９３０に基づいて、図７のストリーミングアプリケーション７３０は、所与の利用可能なビットレートについて、そのビットレートについての歪みを最小化する特定の符号化されたビデオシーケンス１８０を選択できる。ストリーミングアプリケーション７３０は、ストリーミング中に、単一の符号化されたビデオシーケンス１８０を選択し得るか、または、複数のビデオシーケンス間において動的に選択し得る。例えば、ストリーミングアプリケーション７３０は、ショット境界において、複数の符号化されたビデオシーケンス１８０間における切り替えを行い得る。この手法を用いて、ストリーミングアプリケーション７３０は、過剰な帯域幅を必要とせずに、一貫した品質のビデオ体験をエンドユーザーに配信し得る。
【００５９】
符号化エンジン１６０は、ストレージおよび計算の複雑さを低減するために、上述の技術の様々な変形を実装し得る。一実施形態において、符号化エンジン１６０は、上述の手法の「制約された」バージョンを実装する。ここで図３を参照すると、制約されたバージョンを実装するために、符号化エンジン１６０は、限られた範囲のＱＰ値を用いてリサンプリングされたシーケンス３２０のみを符号化する。従って、全ての可能なＱＰ値についてリサンプリングされたシーケンス３２０のバージョンを生成する代わりに、符号化エンジン１６０は、所望の範囲のＱＰ値を選択し、次に、その範囲のＱＰ値についてリサンプリングされたシーケンス３２０のみを符号化し得る。より高いＱＰ値は、許容できないほど低い品質を提供するので、これらのより高いＱＰ値は、符号化の目的には不要であると見なされ得る。同様に、より低いＱＰ値は、不合理なビットレートを必要するので、これらのＱＰ値も不要であると見なされ得る。従って、符号化エンジン１６０は、符号化を、実際にエンドユーザーに配信されるべき符号化を生成する可能性が高いＱＰ値のみに制限し得る。更なる実施形態では、符号化エンジン１６０は、ショット毎に生成される複数の異なる符号化の数を、一定の値に固定する。所与のショットについて生成される符号化の数が、その一定の値よりも少ない状況では、符号化エンジン１６０は、その一定の値を満たすために、符号化を複製し得る。様々な実施形態において、符号化エンジン１６０は、任意の技術的に実行可能な方法で、符号化の目的で用いられる符号化パラメータの値の数を制限し得る。
【００６０】
例えば、符号化エンジン１６０は、効率に関連した１以上の基準に基づいて、符号化パラメータについての可能な値のサブセットを選択し得る。例えば、符号化エンジン１６０は、ＱＰ値のより小さい範囲内において、２つ目毎のＱＰ値、３つ目毎のＱＰ値、またはＮ個目毎のＱＰ値（Ｎは２から１０までの範囲の整数）を選択し得る。幾つかの別の実施形態では、符号化エンジン１６０によって、それぞれ異なるＱＰ値が選択される統計的確率を決定するために、様々なショットシーケンスの複数の符号化から統計が集められ得る。次に、符号化エンジン１６０が符号化の目的で用いるＱＰ値が、統計的確率に基づいて制限され得る。より具体的には、統計的確率に基づいて、符号化エンジン１６０は、符号化エンジン１６０が選択する可能性が最も高いＱＰ値を用いるよう制約され得る。
【００６１】
別の実施形態では、符号化エンジン１６０は、上述の手法の「反復」バージョンを実施し、それにより、符号化エンジン１６０は、複数の符号化パスを行うことにより、目標ビットレートまたは目標歪みレベルを有する符号化を決定する。最初に、符号化エンジン１６０は、「制約された」手法に関して上述したような制約された範囲のＱＰ値を用いて、最初のパスを行い得る。符号化エンジン１６０が、図９に示されているようなシーケンスＲＤ点の凸包を生成したら、次に、符号化エンジン１６０は、目標ビットレートまたは目標歪みレベルに最も近いシーケンスＲＤ点を識別する。次に、符号化エンジン１６０は、その凸包上の１以上の隣接する点を識別し、それらの点と関連付けられたＱＰの範囲に基づいて、更なる符号化を行う。このようにして、符号化エンジン１６０は、特定のビットレートまたは歪みを目標にするために、符号化に用いられるＱＰの範囲を繰り返し洗練し得る。
【００６２】
更に別の実施形態では、符号化エンジン１６０は、上述の手法の「固定品質」バージョンを実装し、保存しておいて後で処理する必要があるショット符号化の数を制限する。この手法を用いて、符号化エンジン１６０は、所定の十分に離間した品質間隔でショット符号化を生成し得る。次に、符号化エンジン１６０は、これらのショット符号化をアセンブルして、シーケンス全体にわたって固定品質を有する完全な符号化されたビデオシーケンス１８０にし得る。ショットシーケンス毎に実施されるショット符号化の数は、必要な品質と必要なストレージとのトレードオフを表す、構成可能なパラメータである。この技術を行う際、符号化エンジン１６０は、凸包点５８０を処理し、次に、残りの点が所望の数のショット符号化を表すまで、余分な点を繰り返し除去する。符号化エンジン１６０は、例えば、隣接する凸包点５８０に対して最小のギャップを有する凸包点５８０を繰り返し除去し得る。この技術により、符号化エンジン１６０は、ショット符号化の最低品質を最大化できる。
【００６３】
他の実施形態では、符号化エンジン１６０は、上述の手法の「最小／最大最適化」バージョンを実装する。そのような実装では、符号化エンジン１６０は、導関数の値の代わりに、歪み測定指標または品質測定指標に基づいて、後続のシーケンス８２０に含める凸包点を選択する。特に、符号化エンジン１５０は、最大の歪み測定指標（または最大の品質測定指標）を有するシーケンス８２０（ｘ）に含まれる凸包点を決定し、次に、後続のシーケンス８２０（ｘ＋１）に含めるために、選択された凸包点に上側において隣接する凸包点を含める。
【００６４】
関連する実施形態では、シーケンストレリス７１０を昇る際、符号化エンジン１６０は、凸包点５８０間の勾配の変化を、実際の品質値とトレードオフし得る。その際、後続のシーケンスに含める凸包点５８０を選択する前に、符号化エンジン１６０は、所与の閾値より低い品質測定指標（または所与の閾値より高い歪み測定指標）を有するショットシーケンス（およびそれに対応する凸包点５８０）をフィルタリングして除去し得る。このようにして、利用可能なショットシーケンスおよび凸包点を制約した後にのみ、符号化エンジン１６０は、残っている凸包点５８０の勾配値の比較に基づいて、後続の符号化されたビデオシーケンス１８０を生成する。この手法は、平均品質および最低限の品質の両方を最大化し得る。
【００６５】
これまでに述べた手法のいずれかを用いて、符号化エンジン１６０は、符号化挙動を制限する特定の制約を執行するよう構成され得る。例えば、符号化エンジン１６０は、符号化されたショットシーケンスの歪みを、常に最大許容歪みレベルを下回るように制限するよう構成され得る。しかし、より複雑な制約に準拠することを可能にするために、符号化エンジン１６０の調整が必要になり得る。複雑な制約の一例は、当業者に知られているビデオバッファ検証器（ＶＢＶ）制約である。ＶＢＶ制約は、一般的に、比較的一定のビットレートを有するデータが到着して、比較的一定のサイズを有するバッファに格納されるべきであることを述べている。この制約は、潜在的な問題の中でも特に、バッファのオーバーフローおよび／またはアンダーフローを回避するのに役立つ。ＶＢＶ固定ビットレート（ＣＢＲ）制約およびＶＢＶ可変ビットレート（ＶＢＲ）制約を含む、より具体的なＶＢＶ制約の式も当業者に知られているが、これらの特定のバージョンの議論は、簡潔のために省略する。
【００６６】
一実施形態において、符号化エンジン１６０は、図８Ａ〜図８Ｄに関して先に述べたトレリスの上昇を、最終的な符号化されたビデオシーケンス１８０が、上述のＶＢＶ制約を含む任意の複雑な制約のセットに準拠することを可能にするように行うよう構成され得る。その際、符号化エンジン１６０は、後続のシーケンスに含めるための新たな凸包点を選択するために、隣接する凸包点５８０間の勾配値を解析するだけでなく、あり得る各後続のシーケンスが１以上の制約（例えば、ＶＢＶ ＣＢＲ、ＶＢＶ ＶＢＲ等）に準拠することについても解析する。従って、後続のシーケンスに含まれる可能性がある各凸包点５８０について、符号化エンジン１６０は、そのシーケンスが制約に準拠する度合いを決定する。次に、符号化エンジン１６０は、後続のシーケンスが準拠を維持することを可能にする凸包点５８０を選択する。この形態のトレリスの上昇は、「動的プログラミング」手法を構成するものであり、ビットレート対歪みを最適化するという具体的な問題に対するビタビ（Viterbi）解の１つの形態を表し得る。
【００６７】
別の実施形態では、符号化エンジン１８０およびストリーミングアプリケーション７３０は、任意の技術的に実行可能な方法で、符号化されたビデオシーケンス１８０をエンドポイント装置へと配信させ得る。同じまたは別の実施形態において、符号化エンジン１８０およびストリーミングアプリケーション７３０と関連付けられた任意の量およびタイプの機能は、任意の技術的に実行可能な方法で、任意の数のホストコンピュータ１１０、任意の数のクラウドコンピュータ１４０、任意の数のクライアントコンピュータ（図示せず）、および任意の数のエンドポイント装置において実装または分散され得る。
【００６８】
例えば、一部の実施形態では、符号化エンジン１８０は、ストリーミングアプリケーション７３０を、エンドポイント装置上で実行されるクライアントアプリケーションに、メタデータを配信するよう構成する。メタデータは、任意のレベルの粒度で符号化されたビデオコンテンツと関連付けられた測定指標（例えば、１以上の符号化されたショットシーケンスおよび／または符号化されたビデオシーケンス１８０と関連付けられたビットレートおよび品質測定指標等）を含むが、それらに限定されない。クライアントアプリケーションは、メタデータに基づいて、任意の技術的に実行可能な方法で、任意のタイプおよび量の適応的ストリーミング処理を行い得る。
【００６９】
１つの状況において、ユーザーは、ビデオプレーヤーアプリケーションを、映画をラップトップにストリーミングするよう構成する。ストリーミングアプリケーション１９０は、４つの異なる符号化されたビデオシーケンス１８０（１）〜１８０（４）と関連付けられたメタデータを、ビデオプレーヤーアプリケーションに送信する。メタデータは、符号化されたビデオシーケンス１８０（４）が最も高いビットレートおよび最も高い視覚的品質と関連付けられており、一方、符号化されたビデオシーケンス１８０（１）が最も低いビットレートおよび最も低い視覚的品質と関連付けられていることを示す。所与の任意のときに、ビデオプレーヤーアプリケーションは、映画の再生中に、再バッファリングによる再生の中断を回避しつつ、利用可能な最も高い視覚的品質を提供する符号化されたビデオシーケンス１８０を選択する。
【００７０】
初期の利用可能な帯域幅およびメタデータに基づいて、ビデオプレーヤーアプリケーションは、ストリーミングアプリケーション７３０を、ビデオプレーヤーアプリケーションへの符号化されたビデオシーケンス１８０（４）のストリーミングを開始するよう構成する。このようにして、ビデオプレーヤーアプリケーションは、映画の再生中に、利用可能な最も高い視覚的品質を提供する。一般的に、特に一日のうちのピーク時間におけるインターネットトラフィックを理由として、接続条件が急速に変化し、かなり変動しやすくなり得る。上述の状況では、１０分間の再生後に、利用可能な帯域幅が劇的に減少する。減少した帯域幅およびメタデータに基づいて、ビデオプレーヤーアプリケーションは、ストリーミングアプリケーション７３０を、符号化されたビデオシーケンス１８０（４）と符号化されたビデオシーケンス１８０（１）との間の切り替えを動的に行うよう構成する。次のショット境界において、ストリーミングアプリケーション７３０は、符号化されたビデオシーケンス１８０（４）の代わりに、符号化されたビデオシーケンス１８０（１）のビデオプレーヤーアプリケーションへのストリーミングを開始する。ビデオプレーヤーアプリケーションは、もはや、映画の再生中に最も高い視覚的品質を提供することはできないが、ビデオプレーヤーアプリケーションは、再バッファリングに起因する再生の中断を良好に回避する。
【００７１】
当業者には、これまでに説明された技術が、ビデオだけでなく、オーディオにも同様に適用可能であることが理解されよう。例えば、上述の客観的品質測定指標は、音質の尺度を提供し得る。上述の技術の残りの部分は、他の点では同様に進行することになる。
【００７２】
符号化されたビデオシーケンスの生成手順
図１０は、本発明の様々な実施形態による、ビデオコンテンツのチャンクをアセンブルして、符号化されたビデオシーケンスにするための方法のステップのフロー図である。この方法のステップは、図１〜図９のシステムに関して説明されるが、この方法のステップを任意の順序で行うよう構成された任意のシステムが本発明の範囲であることが、当業者には理解されよう。
【００７３】
図示されているように、方法１０００はステップ１００２において開始し、そこで、符号化エンジン１６０はソースビデオシーケンス１７０を受信する。ソースビデオシーケンス１７０は、ネイティブフォーマットまたは「配信」フォーマットで符号化されたフレームのシーケンスを含む。ステップ１００４において、符号化エンジン１６０は、ソースビデオシーケンス１７０を処理して無用な画素を除去する。そのような画素は、ビデオシーケンスの実際のコンテンツに隣接した水平または垂直の黒いバーに存在し得る。ステップ１００６において、符号化エンジン１６０は、ソースビデオシーケンス１７０を複数のショットシーケンス２２０にカットする。各ショットシーケンス２２０は、特定のカメラまたはシミュレーションされたカメラ（コンピュータ・アニメーション・シーケンスの場合）からキャプチャされたフレームのサブシーケンスを含む。
【００７４】
次に、方法はステップ１００８に進む。ステップ１００８において、符号化エンジン１６０は、各ショットシーケンス２２０について、ショットシーケンスをＭ回リサンプリングすることにより、図３に示されているような、リサンプリングされたシーケンス３２０の解像度ラダー３３０を生成する。各リサンプリングされたシーケンス３２０は、それぞれ異なる解像度を有する。１つのリサンプリングされたシーケンス３２０は、元のビデオシーケンスと同じ解像度を有する。
【００７５】
次に、方法はステップ１０１０に進む。符号化エンジン１６０は、解像度ラダー３３０内の各リサンプリングされたシーケンス３２０について、そのリサンプリングされたシーケンス３２０を処理パイプライン３４０によって処理することにより、データ点３５０を生成する。処理パイプライン３４０によって実行される具体的な処理ステップについては、図１１に関してより詳細に後述する。各データ点３５０は、図１１に関してより詳細に後述するように、所与のリサンプリングされたシーケンス３２０について、そのシーケンスの符号化解像度、そのシーケンスについての品質測定指標、およびそのシーケンスの符号化に用いられたＱＰ値を示す。
【００７６】
ステップ１０１２において、符号化エンジン１６０は、解像度ラダー３３０内にある全てのリサンプリングされたシーケンス３２０についての全てのデータ点３５０を集めて、データセット３６０を生成する。データセット３６０は、１つのショットシーケンス２２０に対応する。データセット３６０内の各データ点は、そのショットシーケンスのそれぞれ異なる符号化および異なる解像度に対応する。ステップ１０１４において、符号化エンジン１６０は、これらのデータ点に関連付けられた品質測定指標を歪み測定指標に変換し、次に、図５Ｂに示されているように、そのデータセットについての凸包点５８０を生成する。凸包点５８０は、リサンプリング／符号化された全てのショットシーケンスにわたって、歪みまたはビットレートを最小化する。
【００７７】
ステップ１０１６において、符号化エンジン１６０は、全ての解像度ラダーにわたる全ての凸包点５８０を集めてシーケンストレリス７１０を生成する。例示的なシーケンストレリス７１０の構築については、図８Ａ〜図８Ｄに関して詳細に述べられている。ステップ１０１８において、符号化エンジン１６０は、シーケンストレリスを繰り返し昇って、符号化されたビデオシーケンス１８０およびそれに対応するシーケンスＲＤ点７２０の集合を生成する。シーケンストレリス７１０を昇る手法は、図１２に関して述べられている。
【００７８】
ステップ１０２０において、ストリーミングアプリケーション７３０は、ストリーミングするための符号化されたビデオシーケンス１８０を、関連付けられたシーケンスＲＤ点７２０に基づいて選択する。その際、ストリーミングアプリケーションは、所与の利用可能なビットレートについて歪みを最小化する特定のシーケンスＲＤ点７２０を選択し、次に、そのシーケンスＲＤ点７２０と関連付けられた符号化されたビデオシーケンス１８０を、エンドポイント装置にストリーミングし得る。
【００７９】
図１１は、本発明の様々な実施形態による、リサンプリングされたショットシーケンスを処理して１組のデータ点を生成する方法のステップのフロー図である。この方法のステップは、図１〜図９のシステムに関して説明されるが、この方法のステップを任意の順序で行うよう構成された任意のシステムが本発明の範囲であることが、当業者には理解されよう。
【００８０】
符号化エンジン１６０は、処理パイプライン３４０内の所与のサブパイプライン４５０に関連付けられた処理を行う方法１１００を実装する。符号化エンジン１６０は、所与の処理パイプライン３４０を実装するために、複数のサブパイプライン４５０を並列に実行し得るものであり、従って、方法１１００を複数回行い得る。
【００８１】
図示されているように、方法１１００はステップ１１０２において開始し、そこで、符号化エンジン１６０は、選択された量子化パラメータ（ＱＰ）を用いて、リサンプリングされたシーケンス３２０を符号化する。次に、ステップ１１０４において、符号化エンジン１６０は、符号化されたシーケンスを復号化し、ステップ１１０６において、復号化されたシーケンスを、ソースビデオシーケンス１７０と関連付けられた解像度にアップサンプリングする。ステップ１１０８において、符号化エンジン１６０は、アップサンプリングされたシーケンスについての１以上の品質測定指標（ＱＭ）を生成する。ステップ１１１０において、符号化エンジン１６０は、リサンプリングされたシーケンスの解像度と、量子化パラメータ（ＱＰ）の選択と、符号化されたリサンプリングされたビデオシーケンスについて生成された品質測定指標（ＱＭ）とを含むデータ点４４０を生成する。
【００８２】
図１２は、本発明の様々な実施形態による、１組の符号化されたビデオシーケンスを生成する方法ステップのフロー図である。この方法のステップは、図１〜図９のシステムに関して説明されるが、この方法のステップを任意の順序で行うよう構成された任意のシステムが本発明の範囲であることが、当業者には理解されよう。
【００８３】
図示されているように、方法１２００はステップ１２０２において開始し、そこで、符号化エンジン１６０は、全てのショットシーケンス２２０についての凸包点５８０に基づいて、シーケンストレリス７１０を生成する。図８Ａ〜図８Ｄに関して上述したように、シーケンストレリス７１０は、凸包点５８０の個々の列を含み、各列は特定のショットシーケンスに対応する。従って、ソースビデオシーケンス１７０の符号化されたバージョンは、そのような各列から、１つの符号化されたリサンプリングされたショットシーケンス２２０を集めることによって構築され得る。
【００８４】
ステップ１２０４において、符号化エンジン１６０は、最も低いビットレートを有する凸包点５８０のシーケンスを決定する。ステップ１２０６において、符号化エンジン１６０は、決定されたシーケンスを「現在のシーケンス」として指定する。ステップ１２０８において、符号化エンジンは、現在のシーケンスに基づいて、符号化されたビデオシーケンスを生成する。その際、符号化エンジン１６０は、ソースビデオシーケンス１７０の符号化されたバージョンを構築するために、凸包点５８０のシーケンスと関連付けられた各リサンプリングされた符号化されたショットシーケンス２２０を集める。ステップ１２１０において、符号化エンジン１６０は、その符号化されたビデオシーケンスに基づいて、シーケンスＲＤ点７２０を生成する。
【００８５】
ステップ１２１２において、符号化エンジン１６０は、現在のシーケンス内の各凸包点と、その上側において隣接する凸包点との間の勾配の大きさを計算する。所与の凸包点の「上側において隣接する」凸包点とは、その凸包点の同じ列内において直上にある凸包点である。ステップ１２１４において、符号化エンジン１６０は、互いに対して最大の勾配の大きさを有する凸包点およびその上側において隣接する凸包点を識別する。ステップ１２１６において、符号化エンジン１６０は、その凸包点を、その上側において隣接する凸包点と置き換えた、凸包点の新たなシーケンスを生成する。最後に、ステップ１２１８において、符号化エンジン１６０は、新たなシーケンスを「現在のシーケンス」として指定し、ステップ１２０８に戻る。符号化エンジン１６０は、他のシーケンスと比較して最大のビットレートを有する符号化シーケンス１７０を生成するまで、または別の終了条件が満たされるまで、方法１２００を繰り返し得る。
【００８６】
このようにして、符号化エンジン１６０は、現在のシーケンスの、他のバージョンと比較して歪みおよびビットレートが最大限に低減される後続のバージョンを決定することにより、シーケンストレリス７１０を「昇る」。このようにシーケンストレリス７１０を昇ることにより、符号化エンジン１６０は、全てのリサンプリングされた符号化されたショットシーケンス（本明細書においては「チャンク」としても参照される）の全ての可能な組合せを考慮する必要がない。従って、符号化エンジン１６０は、或る範囲のビットレートについて歪みを最適化する一続きの符号化されたビデオシーケンスを依然として決定しつつ、かなりのコンピューティングリソースを節約し得る。
【００８７】
要約すると、符号化エンジンは、所与のビットレートについて最適な品質を提供するように、ビデオシーケンスを符号化する。符号化エンジンは、ビデオシーケンスをカットして、ショットシーケンスの集合にする。各ショットシーケンスは、特定のキャプチャ地点からキャプチャされたビデオフレームを含む。符号化エンジンは、各ショットシーケンスを、或る範囲の異なる解像度にわたってリサンプリングし、各リサンプリングされたシーケンスを、或る範囲の品質パラメータを用いて符号化し、次に、各符号化されたシーケンスを、そのビデオシーケンスの元の解像度にアップサンプリングする。各アップサンプリングされたシーケンスについて、符号化エンジンは品質測定指標を計算し、品質測定指標およびリサンプリング解像度を含むデータ点を生成する。符号化エンジンは、そのような全てのデータ点を集め、次に、得られたデータセットの凸包を計算する。符号化エンジンは、全てのショットシーケンスにわたる全ての凸包に基づいて、或る範囲のビットレートについてのショットシーケンスの最適な集合を決定する。
【００８８】
本明細書に記載された技術の少なくとも1つの長所は、ビデオシーケンスを、所与のビットレートについて利用可能な最良の品質で、エンドユーザーにストリーミングできることである。また、それとは逆に、所与の所望の品質について、ビデオシーケンスを、最小限の可能なビットレートで提供することができる。
【００８９】
項１
本発明の幾つかの実施形態は、コンピュータによって実施される方法であって、ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程とを含む方法を含む。
【００９０】
項２
前記第１の１組の符号化されたチャンクを生成する前記工程が、前記ソースビデオシーケンス内において、第１のキャプチャ地点と関連付けられた第１のフレームのシーケンスを識別する工程と、前記第１のフレームのシーケンスを複数の異なる解像度でリサンプリングすることにより、前記第１のフレームのシーケンスのリサンプリングされたバージョンの解像度ラダーを生成する工程と、前記第１のフレームのシーケンスの各前記リサンプリングされたバージョンを、それぞれ異なる符号化パラメータを用いて符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程とを含む、項１記載のコンピュータによって実施される方法。
【００９１】
項３
前記第１の１組のデータ点を生成する前記工程が、前記第１の１組の符号化されたチャンクのうちの各符号化されたチャンクを復号化することにより、第１の１組の復号化されたチャンクを生成する工程と、前記第１の１組の復号化されたチャンクのうちの各復号化されたチャンクを、前記ソースビデオシーケンスと関連付けられたソース解像度にアップサンプリングすることにより、第１の１組のアップサンプリングされたチャンクを生成する工程と、第１の１組のアップサンプリングされたチャンクのうちの各アップサンプリングされたチャンクについて、それぞれ異なるデータ点を生成する工程とを含む、項１および２のいずれか一項記載のコンピュータによって実施される方法。
【００９２】
項４
前記第１の１組のデータ点のうちの特定のデータ点が、前記第１の１組のアップサンプリングされたチャンクのうちの特定のアップサンプリングされたチャンクについての特定の客観的品質測定指標を生成することと、前記特定の客観的品質測定指標を特定の歪み測定指標に変換することと、前記特定のアップサンプリングされたチャンクについてのビットレートを計算することと、前記特定の歪み測定指標と前記ビットレートとを組み合わせることにより、前記特定のデータ点を生成することとによって、生成される、項１、２、および３のいずれか一項記載のコンピュータによって実施される方法。
【００９３】
項５
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記第１のサブセットのデータ点を計算する前記工程が、前記第１の１組のデータ点を含む第１の領域を決定する工程と、前記第１の領域の第１の境界であって、該第１の境界の第１の側に、前記第１の１組のデータ点のうちのデータ点が存在しない、第１の境界を識別する工程と、前記第１の境界に沿って存在していないあらゆるデータ点を捨てる工程であって、前記第１の境界に沿って存在する各データ点が、前記第２の測定指標に関して前記第１の測定指標を最適化する、工程とを含む、項１、２、３、および４のいずれか一項記載のコンピュータによって実施される方法。
【００９４】
項６
前記第１の測定指標が歪みを含み、前記第２の測定指標がビットレートを含む、項１、２、３、４、および５のいずれか一項記載のコンピュータによって実施される方法。
【００９５】
項７
前記ソースビデオシーケンスについての第２の１組の符号化されたチャンクを生成する工程と、前記第２の１組の符号化されたチャンクに基づいて、第２の１組のデータ点を生成する工程と、前記第２の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記少なくとも２つの測定指標にわたって最適化された第２のサブセットのデータ点を計算する工程と、前記第２のサブセットのデータ点に含まれる第３のデータ点と前記第２のサブセットのデータ点に含まれる第４のデータ点との間の第２の勾配値を計算する工程とを更に含む、項１、２、３、４、５、および６のいずれか一項記載のコンピュータによって実施される方法。
【００９６】
項８
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する前記工程が、前記第１の勾配の大きさが第２の勾配より大きいことを決定する工程を含む、項１、２、３、４、５、６、および７のいずれか一項記載のコンピュータによって実施される方法。
【００９７】
項９
前記第２の勾配値が、他のサブセットのデータ点と関連付けられた他の勾配値より大きいことが決定されたことに基づいて、前記第４のデータ点と関連付けられた第２の符号化されたチャンクが前記ソースビデオシーケンスの別の符号化されたバージョンに含まれるべきであることを決定する工程を更に含む、項１、２、３、４、５、６、７、および８のいずれか一項記載のコンピュータによって実施される方法。
【００９８】
項１０
前記第１の１組の符号化されたチャンクが、第１のキャプチャ地点から連続的にキャプチャされた第１のシーケンスのビデオフレームと関連付けられており、第２の１組の符号化されたチャンクが、第２のキャプチャ地点から連続的にキャプチャされた第２のシーケンスのビデオフレームと関連付けられている、項１、２、３、４、５、６、７、８、および９のいずれか一項記載のコンピュータによって実施される方法。
【００９９】
項１１
プログラム指示がプロセッサによって実行された際に、該プロセッサを、ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程とを行うよう構成するプログラム指示を格納したことを特徴とする非一過性のコンピュータ可読媒体。
【０１００】
項１２
前記第１の１組の符号化されたチャンクを生成する前記工程が、前記ソースビデオシーケンス内において、第１のキャプチャ地点と関連付けられた第１のフレームのシーケンスを識別する工程と、前記第１のフレームのシーケンスを複数の異なる解像度でリサンプリングすることにより、前記第１のフレームのシーケンスのリサンプリングされたバージョンの解像度ラダーを生成する工程と、前記第１のフレームのシーケンスの各前記リサンプリングされたバージョンを、それぞれ異なる符号化パラメータを用いて符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程とを含む、項１１記載の非一過性のコンピュータ可読媒体。
【０１０１】
項１３
前記第１の１組の符号化されたチャンクを生成する前記工程が、複数の可能な値および符号化されたチャンクの最大数に基づいて、符号化パラメータについての複数の値を生成する工程であって、前記複数の値に含まれる値の総数が前記複数の可能な値に含まれる可能な値の総数より小さい、工程と、前記符号化パラメータについての前記複数の値に基づいて、第１のフレームのシーケンスの複数のリサンプリングされたバージョンを符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程とを含む、項１１および１２のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０２】
項１４
前記第１の１組のデータ点を生成する前記工程が、前記第１の１組の符号化されたチャンクのうちの各符号化されたチャンクを復号化することにより、第１の１組の復号化されたチャンクを生成する工程と、前記第１の１組の復号化されたチャンクのうちの各復号化されたチャンクを、前記ソースビデオシーケンスと関連付けられたソース解像度にアップサンプリングすることにより、第１の１組のアップサンプリングされたチャンクを生成する工程と、第１の１組のアップサンプリングされたデータチャンクのうちの各アップサンプリングされたチャンクについて、それぞれ異なるデータ点を生成する工程とを含む、項１１、１２、および１３のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０３】
項１５
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記第１のサブセットのデータ点を計算する前記工程が、前記第１の１組のデータ点を含む第１の領域を決定する工程と、前記第１の領域の第１の境界であって、該第１の境界の第１の側に、前記第１の１組のデータ点のうちのデータ点が存在しない、第１の境界を識別する工程と、前記第１の境界に沿って存在するあらゆるデータ点を前記第１のサブセットのデータ点に含める工程とを含む、項１１、１２、１３、および１４のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０４】
項１６
前記第１の測定指標が歪みを含み、前記第２の測定指標がビットレートを含む、項１１、１２、１３、１４、および１５のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０５】
項１７
前記ソースビデオシーケンスについての第２の１組の符号化されたチャンクを生成する工程と、前記第２の１組の符号化されたチャンクに基づいて、第２の１組のデータ点を生成する工程と、前記第２の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記少なくとも２つの測定指標にわたって最適化された第２のサブセットのデータ点を計算する工程と、前記第２のサブセットのデータ点に含まれる第３のデータ点と前記第２のサブセットのデータ点に含まれる第４のデータ点との間の第２の勾配値を計算する工程とを更に含む、項１１、１２、１３、１４、１５、および１６のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０６】
項１８
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する前記工程が、前記第１の勾配の大きさが第２の勾配より大きいことを決定する工程を含む、項１１、１２、１３、１４、１５、１６、および１７のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０７】
項１９
前記第２の勾配値が、１以上の他のサブセットのデータ点と関連付けられた１以上の他の勾配値より小さいことが決定されたことに基づいて、前記第４のデータ点と関連付けられた第２の符号化されたチャンクが前記ソースビデオシーケンスの別の符号化されたバージョンに含まれないべきであることを決定する工程を更に含む、項１１、１２、１３、１４、１５、１６、１７、および１８のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０８】
項２０
前記第１の１組の符号化されたチャンクが第１のショットシーケンスと関連付けられており、第２の１組の符号化されたチャンクが第２のショットシーケンスと関連付けられている、項１１、１２、１３、１４、１５、１６、１７、１８、および１９のいずれか一項記載の非一過性のコンピュータ可読媒体。
【０１０９】
項２１
幾つかの実施形態は、システムであって、ソフトウェアアプリケーションを格納したメモリと、前記メモリに結合されたプロセッサとを含み、前記プロセッサが、前記ソフトウェアアプリケーションを実行した際に、ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、前記第１の１組のデータ点にわって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程とを行うよう構成される、システムを含む。
【０１１０】
項２２
前記ソフトウェアアプリケーションを実行した際に、前記プロセッサが、前記第１の１組の符号化されたチャンクを生成する工程と、前記第１の１組のデータ点を生成する工程と、１以上の凸包処理を行う工程と、前記第１の勾配値を計算する工程と、前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう更に構成される、項２１記載のシステム。
【０１１１】
請求項のいずれかに記載されている請求項の要素のうちの任意のもの、および/または、本願に記載されている要素のうちの任意のもののあらゆる組合せは、どのような形であれ、本発明および保護の意図される範囲に含まれる。
【０１１２】
説明の目的で、様々な実施形態の説明を示したが、これらは網羅的であることを意図したものではなく、開示された実施形態に限定することは意図しない。当業者には、記載された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が自明であろう。
【０１１３】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具現化され得る。従って、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウエア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組合せた実施形態の形態をとり得るものであり、それらの全ては、本明細書においては一般的に「モジュール」、または「システム」として参照される。それに加えて、本開示に記載されている任意のハードウェアおよび/またはソフトウェア技術、プロセス、機能、コンポーネント、エンジン、モジュール、またはシステムは、１つの回路または1組の回路として実装され得る。更に、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する１以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
【０１１４】
１以上のコンピュータ可読媒体の任意の組合せが用いられ得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体であり得る。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組合せであり得るが、それらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（網羅的ではないリスト）としては、１以上のワイヤを有する電気的接続、ポータブルコンピュータのディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ装置、磁気ストレージ装置、またはそれらの任意の適切な組合せが挙げられる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、指示を実行するシステム、装置、またはデバイスによって用いられる、またはそれらに関連して用いられるためのプログラムを収容または格納可能な、任意の有体の媒体であり得る。
【０１１５】
上記において、本開示の態様を、本開示の実施形態による方法、装置（システム）およびコンピュータプログラム製品のフローチャートおよび／またはブロック図を参照して説明した。フローチャートおよび／またはブロック図の各ブロック、並びに、フローチャートおよび／またはブロック図のブロックの組合せは、コンピュータプログラムの指示によって実装され得ることが理解されよう。これらのコンピュータプログラム指示は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに供給されてマシンを生成し得る。これらの指示は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行された際に、フローチャートおよび／またはブロック図の１または複数のブロックにおいて指定されている機能／動作の実装を可能にする。そのようなプロセッサは、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルゲートアレイであり得るが、それらに限定されない。
【０１１６】
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および処理を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されている論理的機能を実装するための１以上の実行可能な指示を含むモジュール、セグメント、またはコードの一部を表し得る。なお、幾つかの別の実装例においては、ブロック内に記されている機能が、図面に記されている順序から外れて生じ得る。例えば、続けて示されている２つのブロックが、含まれている機能に応じて、実際には略並列に実行される場合もあり、または、それらのブロックが逆の順序で実行される場合もある。また、ブロック図および／またはフローチャートの各ブロック、並びに、ブロック図および／またはフローチャートのブロックの組合せは、指定されている機能もしくは動作を行う専用ハードウェアに基づくシステムによって、または、専用ハードウェアとコンピュータ指示との組合せによって実装され得る。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態１
コンピュータによって実施される方法であって、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を含むことを特徴とする方法。
実施形態２
前記第１の１組の符号化されたチャンクを生成する前記工程が、
前記ソースビデオシーケンス内において、第１のキャプチャ地点と関連付けられた第１のフレームのシーケンスを識別する工程と、
前記第１のフレームのシーケンスを複数の異なる解像度でリサンプリングすることにより、前記第１のフレームのシーケンスのリサンプリングされたバージョンの解像度ラダーを生成する工程と、
前記第１のフレームのシーケンスの各前記リサンプリングされたバージョンを、それぞれ異なる符号化パラメータを用いて符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程と
を含む、実施形態１記載のコンピュータによって実施される方法。
実施形態３
前記第１の１組のデータ点を生成する前記工程が、
前記第１の１組の符号化されたチャンクのうちの各符号化されたチャンクを復号化することにより、第１の１組の復号化されたチャンクを生成する工程と、
前記第１の１組の復号化されたチャンクのうちの各復号化されたチャンクを、前記ソースビデオシーケンスと関連付けられたソース解像度にアップサンプリングすることにより、第１の１組のアップサンプリングされたチャンクを生成する工程と、
第１の１組のアップサンプリングされたチャンクのうちの各アップサンプリングされたチャンクについて、それぞれ異なるデータ点を生成する工程と
を含む、実施形態１記載のコンピュータによって実施される方法。
実施形態４
前記第１の１組のデータ点のうちの特定のデータ点が、
前記第１の１組のアップサンプリングされたチャンクのうちの特定のアップサンプリングされたチャンクについての特定の客観的品質測定指標を生成することと、
前記特定の客観的品質測定指標を特定の歪み測定指標に変換することと、
前記特定のアップサンプリングされたチャンクについてのビットレートを計算することと、
前記特定の歪み測定指標と前記ビットレートとを組み合わせることにより、前記特定のデータ点を生成することと
によって、生成される、実施形態３記載のコンピュータによって実施される方法。
実施形態５
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記第１のサブセットのデータ点を計算する前記工程が、
前記第１の１組のデータ点を含む第１の領域を決定する工程と、
前記第１の領域の第１の境界であって、該第１の境界の第１の側に、前記第１の１組のデータ点のうちのデータ点が存在しない、第１の境界を識別する工程と、
前記第１の境界に沿って存在していないあらゆるデータ点を捨てる工程であって、前記第１の境界に沿って存在する各データ点が、前記第２の測定指標に関して前記第１の測定指標を最適化する、工程と
を含む、実施形態１記載のコンピュータによって実施される方法。
実施形態６
前記第１の測定指標が歪みを含み、前記第２の測定指標がビットレートを含む、実施形態５記載のコンピュータによって実施される方法。
実施形態７
前記ソースビデオシーケンスについての第２の１組の符号化されたチャンクを生成する工程と、
前記第２の１組の符号化されたチャンクに基づいて、第２の１組のデータ点を生成する工程と、
前記第２の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記少なくとも２つの測定指標にわたって最適化された第２のサブセットのデータ点を計算する工程と、
前記第２のサブセットのデータ点に含まれる第３のデータ点と前記第２のサブセットのデータ点に含まれる第４のデータ点との間の第２の勾配値を計算する工程と
を更に含む、実施形態１記載のコンピュータによって実施される方法。
実施形態８
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する前記工程が、前記第１の勾配の大きさが第２の勾配より大きいことを決定する工程を含む、実施形態７記載のコンピュータによって実施される方法。
実施形態９
前記第２の勾配値が、他のサブセットのデータ点と関連付けられた他の勾配値より大きいことが決定されたことに基づいて、前記第４のデータ点と関連付けられた第２の符号化されたチャンクが前記ソースビデオシーケンスの別の符号化されたバージョンに含まれるべきであることを決定する工程を更に含む、実施形態７記載のコンピュータによって実施される方法。
実施形態１０
前記第１の１組の符号化されたチャンクが、第１のキャプチャ地点から連続的にキャプチャされた第１のシーケンスのビデオフレームと関連付けられており、第２の１組の符号化されたチャンクが、第２のキャプチャ地点から連続的にキャプチャされた第２のシーケンスのビデオフレームと関連付けられている、実施形態１記載のコンピュータによって実施される方法。
実施形態１１
プログラム指示がプロセッサによって実行された際に、該プロセッサを、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう構成するプログラム指示を格納したことを特徴とする非一過性のコンピュータ可読媒体。
実施形態１２
前記第１の１組の符号化されたチャンクを生成する前記工程が、
前記ソースビデオシーケンス内において、第１のキャプチャ地点と関連付けられた第１のフレームのシーケンスを識別する工程と、
前記第１のフレームのシーケンスを複数の異なる解像度でリサンプリングすることにより、前記第１のフレームのシーケンスのリサンプリングされたバージョンの解像度ラダーを生成する工程と、
前記第１のフレームのシーケンスの各前記リサンプリングされたバージョンを、それぞれ異なる符号化パラメータを用いて符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程と
を含む、実施形態１１記載の非一過性のコンピュータ可読媒体。
実施形態１３
前記第１の１組の符号化されたチャンクを生成する前記工程が、
複数の可能な値および符号化されたチャンクの最大数に基づいて、符号化パラメータについての複数の値を生成する工程であって、前記複数の値に含まれる値の総数が前記複数の可能な値に含まれる可能な値の総数より小さい、工程と、
前記符号化パラメータについての前記複数の値に基づいて、第１のフレームのシーケンスの複数のリサンプリングされたバージョンを符号化することにより、前記第１の１組の符号化されたチャンクを生成する工程と
を含む、実施形態１１記載の非一過性のコンピュータ可読媒体。
実施形態１４
前記第１の１組のデータ点を生成する前記工程が、
前記第１の１組の符号化されたチャンクのうちの各符号化されたチャンクを復号化することにより、第１の１組の復号化されたチャンクを生成する工程と、
前記第１の１組の復号化されたチャンクのうちの各復号化されたチャンクを、前記ソースビデオシーケンスと関連付けられたソース解像度にアップサンプリングすることにより、第１の１組のアップサンプリングされたチャンクを生成する工程と、
第１の１組のアップサンプリングされたデータチャンクのうちの各アップサンプリングされたチャンクについて、それぞれ異なるデータ点を生成する工程と
を含む、実施形態１１記載の非一過性のコンピュータ可読媒体。
実施形態１５
前記第１の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記第１のサブセットのデータ点を計算する前記工程が、
前記第１の１組のデータ点を含む第１の領域を決定する工程と、
前記第１の領域の第１の境界であって、該第１の境界の第１の側に、前記第１の１組のデータ点のうちのデータ点が存在しない、第１の境界を識別する工程と、
前記第１の境界に沿って存在するあらゆるデータ点を前記第１のサブセットのデータ点に含める工程と
を含む、実施形態１１記載の非一過性のコンピュータ可読媒体
実施形態１６
前記第１の測定指標が歪みを含み、前記第２の測定指標がビットレートを含む、実施形態１５記載の非一過性のコンピュータ可読媒体。
実施形態１７
前記ソースビデオシーケンスについての第２の１組の符号化されたチャンクを生成する工程と、
前記第２の１組の符号化されたチャンクに基づいて、第２の１組のデータ点を生成する工程と、
前記第２の１組のデータ点にわたって１以上の凸包処理を行うことにより、前記少なくとも２つの測定指標にわたって最適化された第２のサブセットのデータ点を計算する工程と、
前記第２のサブセットのデータ点に含まれる第３のデータ点と前記第２のサブセットのデータ点に含まれる第４のデータ点との間の第２の勾配値を計算する工程と
を更に含む、実施形態１１記載の非一過性のコンピュータ可読媒体。
実施形態１８
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する前記工程が、前記第１の勾配の大きさが第２の勾配より大きいことを決定する工程を含む、実施形態１７記載の非一過性のコンピュータ可読媒体。
実施形態１９
前記第２の勾配値が、１以上の他のサブセットのデータ点と関連付けられた１以上の他の勾配値より小さいことが決定されたことに基づいて、前記第４のデータ点と関連付けられた第２の符号化されたチャンクが前記ソースビデオシーケンスの別の符号化されたバージョンに含まれないべきであることを決定する工程を更に含む、実施形態１７記載の非一過性のコンピュータ可読媒体。
実施形態２０
前記第１の１組の符号化されたチャンクが第１のショットシーケンスと関連付けられており、第２の１組の符号化されたチャンクが第２のショットシーケンスと関連付けられている、実施形態１７記載の非一過性のコンピュータ可読媒体。
実施形態２１
システムであって、
ソフトウェアアプリケーションを格納したメモリと、
前記メモリに結合されたプロセッサと
を含み、
前記プロセッサが、前記ソフトウェアアプリケーションを実行した際に、
ソースビデオシーケンスについての第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組の符号化されたチャンクに基づいて第１の１組のデータ点を生成する工程と、
前記第１の１組のデータ点にわって１以上の凸包処理を行うことにより、少なくとも２つの測定指標にわたって最適化された第１のサブセットのデータ点を計算する工程と、
前記第１のサブセットのデータ点に含まれる第１のデータ点と前記第１のサブセットのデータ点に含まれる第２のデータ点との間の第１の勾配値を計算する工程と、
前記第１の勾配値に基づいて、前記第１のデータ点と関連付けられた第１の符号化されたチャンクが前記ソースビデオシーケンスの最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう構成されることを特徴とするシステム。
実施形態２２
前記ソフトウェアアプリケーションを実行した際に、前記プロセッサが、
前記第１の１組の符号化されたチャンクを生成する工程と、
前記第１の１組のデータ点を生成する工程と、
１以上の凸包処理を行う工程と、
前記第１の勾配値を計算する工程と、
前記第１のデータ点と関連付けられた前記第１の符号化されたチャンクが前記ソースビデオシーケンスの前記最終的な符号化されたバージョンに含まれるべきであることを決定する工程と
を行うよう更に構成される、実施形態２１記載のシステム。
【０１１７】
上記は本開示の実施形態に向けられているが、本開示の基本的な範囲から逸脱することなく、本開示の他の実施形態および更なる実施形態も考案され得るものであり、本開示の範囲は添付の特許請求によって決定される。
【符号の説明】
【０１１８】
１００  システム
１１０  ホストコンピュータ
１１２  プロセッサ
１１６  メモリ
１１８  ホスト符号化エンジン
１４０  クラウドコンピュータ
１４８  クラウド符号化エンジン
１６０  符号化エンジン
１７０  ソースビデオシーケンス
１８０  符号化されたビデオシーケンス
２００  ショット解析器
２２０、３２０  ショットシーケンス
３００  リサンプラー
３２０  リサンプリングされたシーケンス
３３０  解像度ラダー
３４０  処理パイプライン
３５０、４４０  データ点
３６０  データセット
４００  エンコーダ
４１０  デコーダ
４２０  アップサンプラー
４３０  測定指標解析器
４５０（０）〜４５０（Ｌ）  並列サブパイプライン
５８０  凸包点
６００  歪み変換器
６２０  凸包解析器
７００  トレリス反復子
７１０  シーケンストレリス
７２０  シーケンスＲＤ点
７３０  ストリーミングアプリケーション
８２０  シーケンス
【図１Ａ】
0006953613.tif 000002
【図１Ｂ】
0006953613.tif 000003
【図２】
0006953613.tif 000004
【図３】
0006953613.tif 000005
【図４】
0006953613.tif 000006
【図５Ａ】
0006953613.tif 000007
【図５Ｂ】
0006953613.tif 000008
【図６】
0006953613.tif 000009
【図７】
0006953613.tif 000010
【図８Ａ】
0006953613.tif 000011
【図８Ｂ】
0006953613.tif 000012
【図８Ｃ】
0006953613.tif 000013
【図８Ｄ】
0006953613.tif 000014
【図９】
0006953613.tif 000015
【図１０】
0006953613.tif 000016
【図１１】
0006953613.tif 000017
【図１２】
0006953613.tif 000018