(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-18
(45)【発行日】2023-04-26
(54)【発明の名称】コンテンツ適応量子化強度及びビットレートモデリング
(51)【国際特許分類】
H04N 19/124 20140101AFI20230419BHJP
H04N 19/146 20140101ALI20230419BHJP
H04N 19/172 20140101ALI20230419BHJP
H04N 19/192 20140101ALI20230419BHJP
H04N 19/85 20140101ALI20230419BHJP
【FI】
H04N19/124
H04N19/146
H04N19/172
H04N19/192
H04N19/85
(21)【出願番号】P 2021520145
(86)(22)【出願日】2019-06-25
(86)【国際出願番号】 IB2019055358
(87)【国際公開番号】W WO2020089702
(87)【国際公開日】2020-05-07
【審査請求日】2021-06-03
(32)【優先日】2018-10-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジンボ チウ
(72)【発明者】
【氏名】ヤン リウ
(72)【発明者】
【氏名】イハブ アメール
(72)【発明者】
【氏名】レイ ジャン
(72)【発明者】
【氏名】エドワード エイ. ハロルド
(72)【発明者】
【氏名】ジキ ハオ
(72)【発明者】
【氏名】ジャオ ワン
(72)【発明者】
【氏名】ガボール シネス
(72)【発明者】
【氏名】ハイボー リウ
(72)【発明者】
【氏名】ボリス イバノビッチ
【審査官】田中 純一
(56)【参考文献】
【文献】特開平06-350985(JP,A)
【文献】特表2008-523720(JP,A)
【文献】特開2010-252083(JP,A)
【文献】米国特許出願公開第2010/0266047(US,A1)
【文献】米国特許出願公開第2006/0126728(US,A1)
【文献】国際公開第2018/133734(WO,A1)
【文献】特表2020-505830(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
システムであって、
異なる量子化パラメータ(QP)設定を使用した第1のビデオフレームの一部の複数の符号化に基づいて、フレームサイズのQPへのマッピングを生成するように構成されたプリエンコーダと、
エンコーダと、を備え、
前記エンコーダは、
好ましい符号化ビデオフレームサイズに基づいて、前記マッピングから所定のQP値を決定することと、
符号化されるビデオフレームの少なくとも一部についてQPを前記所定のQP値に設定することによって、符号化ビデオフレームを生成することであって、前記符号化ビデオフレームは、入力ビデオフレームを表す、ことと、
前記符号化ビデオフレームをデコーダに伝送して表示することと、
を行うように構成されている、
システム。
【請求項2】
前記プリエンコーダは、
第1のQP設定を使用して、前記第1のビデオフレームの少なくとも一部の第1の符号化を実行することと、
前記第1の符号化の結果の第1のサイズをキャプチャすることと、
第2のQP設定を使用して、前記第1のビデオフレームの少なくとも一部の第2の符号化を実行することと、
前記第2の符号化の結果の第2のサイズをキャプチャすることと、
前記第1のQP設定及び前記第2のQP設定と前記第1のサイズ及び前記第2のサイズとの間の関係に基づいて、フレームサイズのQPへのマッピングを生成することと、
を行うように構成されている、
請求項1のシステム。
【請求項3】
前記第1のビデオフレームの一部は、前記第1の符号化及び前記第2の符号化が実行される前にダウンスケーリングされる、
請求項2のシステム。
【請求項4】
前記エンコーダは、前記プリエンコーダによって生成されたマッピングに基づいて、前記第1のビデオフレー
ムを符号化する場合に初期QPをどのように設定するかを決定するように構成されている、
請求項2のシステム。
【請求項5】
前記
マッピングは、フレームサイズとQPとの間の指数関数的な関係を定義する、
請求項
1のシステム。
【請求項6】
前記入力ビデオフレームは、前記第1のビデオフレーム
に対応している、
請求項1のシステム。
【請求項7】
前記入力ビデオフレームは、ビデオシーケンスにおいて前記第1のビデオフレームに続く第2のビデオフレーム
に対応している、
請求項1のシステム。
【請求項8】
方法であって、
プリエンコーダが、異なる量子化パラメータ(QP)設定を使用した第1のビデオフレームの一部の複数の符号化に基づいて、フレームサイズのQPへのマッピングを生成することと、
エンコーダが、好ましい符号化ビデオフレームサイズに基づいて、前記マッピングから所定のQP値を決定することと、
前記エンコーダが、符号化されるビデオフレームの少なくとも一部についてQPを前記所定のQP値に設定することによって、符号化ビデオフレームを生成することであって、前記符号化ビデオフレームは、入力ビデオフレームを表す、ことと、
前記エンコーダが、前記符号化ビデオフレームをデコーダに伝送して表示することと、を含む、
方法。
【請求項9】
前記プリエンコーダが、第1のQP設定を使用して、前記第1のビデオフレームの少なくとも一部の第1の符号化を実行することと、
前記プリエンコーダが、前記第1の符号化の結果の第1のサイズをキャプチャすることと、
前記プリエンコーダが、第2のQP設定を使用して、前記第1のビデオフレームの少なくとも一部の第2の符号化を実行することと、
前記プリエンコーダが、前記第2の符号化の結果の第2のサイズをキャプチャすることと、
前記プリエンコーダが、前記第1のQP設定及び前記第2のQP設定と前記第1のサイズ及び前記第2のサイズとの間の関係に基づいて、フレームサイズのQPへのマッピングを生成することと、を含む、
請求項8の方法。
【請求項10】
前記第1のビデオフレームの一部は、前記第1の符号化及び前記第2の符号化が実行される前にダウンサンプリングされる、
請求項9の方法。
【請求項11】
前記エンコーダが、前記プリエンコーダによって生成されたマッピングに基づいて、前記第1のビデオフレー
ムを符号化する場合に初期QPをどのように設定するかを決定することを含む、
請求項9の方法。
【請求項12】
前記
マッピングは、フレームサイズとQPとの間の指数関数的な関係を定義する、
請求項
8の方法。
【請求項13】
前記入力ビデオフレームは、前記第1のビデオフレーム
に対応している、
請求項8の方法。
【請求項14】
前記入力ビデオフレームは、ビデオシーケンスにおいて前記第1のビデオフレームに続く第2のビデオフレーム
に対応している、
請求項8の方法。
【請求項15】
装置であって、
メモリと、
前記メモリに結合されたエンコーダと、を備え、
前記エンコーダは、
好ましい符号化ビデオフレームサイズに基づいて、マッピングから所定の量子化パラメータ(QP)値を決定することであって、前記マッピングは、2つ以上の事前符号化パスに基づいて、
フレームのビットカウントとQPとの間の関係を指定する、ことと、
符号化されるビデオフレームの少なくとも一部についてQPを前記所定のQP値に設定することによって、符号化ビデオフレームを生成することであって、前記符号化ビデオフレームは、入力ビデオフレームを表す、ことと、
前記符号化ビデオフレームをデコーダに伝送して表示することと、
を行うように構成されている、
装置。
【請求項16】
前記2つ以上の事前符号化パスは、前記2つ以上の事前符号化パスの前にダウンサンプリングされる第1のビデオフレームの一部に対して実行される、
請求項15の装置。
【請求項17】
前記2つ以上の事前符号化パスは、前記2つ以上の事前符号化パスの前に前処理される第1のビデオフレームの一部に対して実行される、
請求項15の装置。
【請求項18】
前記エンコーダは、前記マッピングに基づいて
、ビデオフレー
ムを符号化する場合に初期QPをどのように設定するかを決定するように構成されている、
請求項15の装置。
【請求項19】
前記2つ以上の事前符号化パスは、2つ以上の異なるQP設定を使用して実行される、
請求項15の装置。
【請求項20】
前記
マッピングは、フレームサイズとQPとの間の指数関数的な関係を定義する、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
様々なアプリケーションが、画像又はビデオコンテンツの符号化及び復号化を実行する。例えば、ビデオトランスコーディング、デスクトップ共有、クラウドゲーム、ゲーム観戦は、コンテンツの符号化及び復号化のサポートを含むアプリケーションの一部である。コンテンツの符号化方法を決定するパラメータの1つに、量子化パラメータ(QP)がある。H.264規格に準拠する方式等のように、様々なブロックベースのビデオ符号化方式では、QPが、符号化処理中に保持されるディテール(detail)を調整する。ビデオフレーム毎又はフレームのブロック毎に選択されるQPは、符号化されたビデオフレームのサイズ又は符号化されたブロックのサイズと直接関連する。QP値を小さく選択すると、多くのディテールが保持されるが、符号化後に得られるサイズが大きくなる。QP値を大きく選択すると、多くのディテールが失われるが、符号化後に生成されるサイズが小さくなる。「量子化パラメータ」という用語は、より一般的には「量子化強度」とも呼ばれることに留意されたい。
【0002】
添付図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0003】
【
図1】コンテンツを符号化及び復号化するシステムの一実施形態のブロック図である。
【
図2】ビデオのフレームを符号化するサーバのソフトウェア構成要素の一実施形態のブロック図である。
【
図3】符号化ロジックの一実施形態のブロック図である。
【
図4】QPをビットカウントにマッピングするグラフの一例である。
【
図5】ターゲットビットカウントに一致するQP値を決定するグラフの一実施形態である。
【
図6】ビットサイズをQPにマッピングするためのマッピングを生成する方法の一実施形態を示す一般化されたフロー図である。
【
図7】ビデオフレームを符号化する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多数の具体的な詳細が記載される。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。場合によっては、本明細書に記載されるアプローチを曖昧にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示される要素が必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0005】
符号化されたビデオフレームのビットサイズを量子化強度にマッピングするビデオ符号化モデルを生成及び実装するシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、エンコーダと、プリエンコーダと、エンコーダ及びプリエンコーダに結合されたメモリと、を少なくとも含む。プリエンコーダは、入力ビデオフレームの少なくとも一部に対して複数の事前符号化パス(pre-encoding passes)を実行する。一実施形態では、入力ビデオフレームは、事前符号化パスの前に前処理される。各事前符号化パスは、異なる量子化強度設定を使用する。一実施形態では、量子化強度設定は、符号化処理中に使用される特定の量子化パラメータ(QP)を指す。プリエンコーダは、事前符号化パス毎に、入力ビデオフレームの符号化された部分(複数可)の出力ビットサイズをキャプチャする。プリエンコーダは、キャプチャされた出力ビットサイズを使用して、符号化されたビデオビットストリームのビットサイズを量子化強度にマッピングするためのモデルを生成する。
【0006】
エンコーダは、入力ビデオフレームの部分(複数可)を符号化する前に、モデルを使用して、指定されたビットサイズを対応する量子化強度にマッピングする。一実施形態では、エンコーダは、指定されたビットサイズをモデルに提供し、モデルは、指定されたビットサイズを生成する量子化強度値を出力する。次に、エンコーダは、所定のビット配分を満たすように、モデルが提供する量子化強度値を使用して、入力ビデオフレームの一部(複数可)を符号化する。一実施形態では、モデルによって提供される量子化強度値を使用することにより、エンコーダは、フレーム中に、より少ない量子化強度調整を行うことができる。これにより、符号化されたビデオビットストリームの表示品質が向上する。
【0007】
図1を参照すると、コンテンツを符号化及び復号化するためのシステム100の一実施形態のブロック図が示されている。システム100は、サーバ105と、ネットワーク110と、クライアント115と、ディスプレイ120と、を含む。他の実施形態では、システム100は、ネットワーク110を介してサーバ105に接続された複数のクライアントを含み、複数のクライアントは、サーバ105によって生成された同じビットストリーム又は異なるビットストリームを受信する。また、システム100は、複数のクライアントのために複数のビットストリームを生成する複数のサーバ105を含むことができる。
【0008】
一実施形態では、システム100は、ビデオコンテンツの符号化及び復号化を実施する。様々な実施形態では、ビデオゲームアプリケーション、クラウドゲームアプリケーション、仮想デスクトップインフラストラクチャアプリケーション又は画面共有アプリケーション等の様々なアプリケーションが、システム100によって実施される。他の実施形態では、システム100は、他のタイプのアプリケーションを実行する。一実施形態では、サーバ105は、ビデオ又は画像フレームをレンダリングし、レンダリングされたフレームをビットストリームに符号化し、符号化されたビットストリームを、ネットワーク110を介してクライアント115に伝送する。クライアント115は、符号化されたビットストリームを復号し、ディスプレイ120又はディスプレイコンポジタに送られるビデオ又は画像フレームを生成する。
【0009】
量子化は、特定のビデオアプリケーションの帯域幅要件を満たすように符号化されたビデオストリームのサイズを制御するために、ビデオ標準(例えば、高効率ビデオコーディング(HEVC)標準、高度なビデオコーディング(AVC)等)で使用されるメカニズムである。これにより、システム100は、符号化されたビデオストリームを、一貫した方法でサーバ105からクライアント115に送信することができる。符号化されたビデオストリームのビットレートを制御しながら、許容可能な画質を提供することは困難である。一実施形態では、各ビデオフレームの好ましいビットカウントは、符号化されたビデオストリームのビットレートをビデオシーケンスのフレームレートで除算したものに等しい。「ビットカウント」という用語は、本明細書において「ビットサイズ」という用語と同義に使用されることに留意されたい。一実施形態では、サーバ105は、入力ビデオシーケンスを符号化するために使用される量子化パラメータ(QP)を調整して、符号化されたビデオストリームの各フレームのビットカウントを制御する。この実施形態では、サーバ105は、ビットカウントをQPにマッピングするモデルを生成する。実施形態に応じて、サーバ105は、所望のビットカウントの指標を受信するか、ビデオフレーム毎に所望のビットカウントを計算する。サーバ105は、各ビデオフレームの所望のビットカウントを知ると、モデルを使用して、所望のビットカウントを特定のQP値にマッピングする。次に、サーバ105は、所定のビデオフレームを符号化する場合に、QPを、この特定のQP値に設定する。一実施形態では、サーバ105は、各ビデオフレーム(又は、各ビデオフレームの一部)について異なるモデルを生成する。他の実施形態では、サーバ105は、複数のビデオフレームに対して所定のモデルを再利用する。
【0010】
ネットワーク110は、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換ネットワーク、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、若しくは、他のタイプのネットワークを含む、任意のタイプのネットワーク又はネットワークの組み合わせを表す。LANの例としては、イーサネット(登録商標)ネットワーク、ファイバ分散データインタフェース(FDDI)ネットワーク、トークンリングネットワーク等が挙げられる。様々な実施形態では、ネットワーク110は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/若しくはソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/若しくはソフトウェア、ルータ、リピータ、スイッチ、グリッド、並びに/又は、他の構成要素を含む。
【0011】
サーバ105は、ビデオ/画像フレームをレンダリングし、ビットカウントをQPにマッピングするモデルを生成し、及び/若しくは、モデルによって提供されるQPを使用してフレームをビットストリームに符号化するためのソフトウェア並びに/又はハードウェアの任意の組み合わせを含む。一実施形態では、サーバ105は、1つ以上のサーバの1つ以上のプロセッサ上で実行される1つ以上のソフトウェアアプリケーションを含む。また、サーバ105は、ネットワーク通信機能、1つ以上の入力/出力デバイス、及び/又は、他の構成要素を含む。サーバ105のプロセッサ(複数可)は、任意の数及びタイプのプロセッサ(例えば、グラフィックス処理装置(GPU)、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等)を含む。プロセッサ(複数可)は、プロセッサ(複数可)によって実行可能なプログラム命令を記憶する1つ以上のメモリデバイスに結合されている。同様に、クライアント115は、ビットストリームを復号し、フレームをディスプレイ120に送るためのソフトウェア及び/又はハードウェアの任意の組み合わせを含む。一実施形態では、クライアント115は、1つ以上のコンピューティングデバイスの1つ以上のプロセッサで実行される1つ以上のソフトウェアアプリケーションを含む。様々な実施形態では、クライアント115は、コンピューティングデバイス、ゲームコンソール、モバイルデバイス、ストリーミングメディアプレイヤ又は他のタイプのデバイスである。
【0012】
図2を参照すると、ビデオのフレームを符号化するためのサーバ200のソフトウェア構成要素の一実施形態のブロック図が示されている。なお、他の実施形態では、サーバ200は、他の構成要素を含むこと、及び/又は、
図2に示す以外の他の適切な方法で構成されることに留意されたい。ビデオの新しいフレーム205は、サーバ200によって受信され、プリエンコーダ220及びエンコーダ230に提供される。プリエンコーダ220及びエンコーダ230の各々は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装される。プリエンコーダ220は、新しいフレーム205を符号化する場合にエンコーダ230によって使用される量子化パラメータ(QP)225を生成する。一実施形態では、プリエンコーダ220は、モデル215に基づいてQP225を生成する。一実施形態では、モデル215は、符号化されたフレームの特定のビットレート又はビットサイズを実現するために使用されるターゲットQP225を識別する。「符号化されたフレーム」という用語は、「圧縮されたフレーム」とも呼ばれることに留意されたい。
【0013】
一実施形態では、プリエンコーダ220は、前処理されたフレーム210を受信し、前処理されたフレーム210に対して1つ以上の動作を実行する。別の実施形態では、プリエンコーダ220は、新しいフレーム205から、前処理されたフレーム210を生成する。一実施形態では、前処理されたフレーム210は、新しいフレーム205のダウンサンプリングされたバージョンである。他の実施形態では、前処理されたフレーム210は、ダウンサンプリング以外の、又は、ダウンサンプリングに加えて、1つ以上の他のタイプの動作(例えば、フィルタリング)が新しいフレーム205に対して実行された後の新しいフレーム205を表す。一実施形態では、前処理されたフレーム210は、メモリ240に記憶される。メモリ240は、符号化処理に関連するデータ及び/又は命令を記憶するための任意の数及びタイプのメモリ又はキャッシュデバイス(複数可)を表す。実施形態に応じて、前処理されたフレーム210は、元の新しいフレーム205の全体又はその一部に対応する。
【0014】
一実施形態では、プリエンコーダ220は、モデル215を生成するために、前処理されたフレーム210に対して複数の事前符号化パスを実行する。例えば、一実施形態では、プリエンコーダ220は、第1のQP設定を用いて、前処理されたフレーム210に対して第1の事前符号化パスを実行し、第1のQP設定の出力フレームのビットサイズを決定する。また、この実施形態では、プリエンコーダ220は、第2のQP設定を用いて、前処理されたフレーム210に対して第2の事前符号化パスを実行し、第2のQP設定の結果として得られる符号化されたフレームのビットサイズを決定する。ここでは、第2のQP設定が、第1のQP設定と異なるものと想定する。また、プリエンコーダ220は、他のQP設定を用いて、追加の事前符号化パスを実行することもできる。異なるQP設定での異なるパスの符号化されたフレームのビットサイズをキャプチャした後に、プリエンコーダ220は、モデル215を生成して、QP設定をビットサイズにマッピングする。次に、所望のビットサイズがモデル215に提供され、対応するQP225が生成される。
【0015】
エンコーダ230は、新しいフレーム205を受信し、プリエンコーダ220によって生成されたQP225に等しいQP値を使用して、新しいフレーム205を符号化する。一実施形態では、エンコーダ230が新しいフレーム205の符号化を開始すると、エンコーダは、開始QP値を、モデル215によって生成されたQP225と等しい値に設定する。エンコーダ230が、生成されている符号化されたデータの量がターゲットビットサイズから大きくずれていると判別した場合、新しいフレーム205の符号化中に開始QP値を調整することができる。エンコーダ230の出力は、1つ以上のクライアント(例えば、
図1のクライアント115)に伝送され及び/又はメモリに記憶される、符号化されたフレーム235である。一実施形態では、プリエンコーダ220は、新しいフレーム205毎に新しいモデル215及びQP225を生成する。別の実施形態では、プリエンコーダ220は、1つ以上の後続のフレームのために、モデル215及びQP225を再利用する。さらなる実施形態では、プリエンコーダ220は、新しいフレーム205の一部からモデル215を生成し、次に、モデル215を使用して、新しいフレーム205の他の部分の符号化に使用されるQP225を生成する。さらなる実施形態では、プリエンコーダ220は、新しいフレーム205について複数のモデル215を生成し、各モデル215は、新しいフレーム205の異なる部分を表す。この実施形態では、プリエンコーダ220は、新しいフレーム205の異なる部分を符号化するために使用される複数のQP値225を生成する。一般的に、プリエンコーダ220は、結果として得られる符号化されたビットストリームに対して選択されたビットレートに基づいて、新しいフレーム205を符号化するためのQP値225を生成する。適切な開始QP値225を選択することによって、エンコーダ230は、通常、新しいフレーム205の符号化処理の際に、より少ないQP調整を行う。これは、結果として得られる符号化されたフレーム235の表示品質を向上するのに役立つ。
【0016】
図3を参照すると、符号化ロジック300の一実施形態のブロック図が示されている。元の入力ビデオフレームは、エンコーダ305及びダウンスケール部310によって受信される。一実施形態では、元の入力ビデオフレームは、YUV色空間内にある。他の実施形態では、元の入力ビデオフレームは、他の色空間で符号化される。エンコーダ305は、入力ビデオフレームを符号化し、メモリ315に伝送される符号化されたビットストリームを生成する。メモリ315は、任意の数及びタイプのメモリデバイスを表す。一実施形態では、符号化されたビットストリームは、高効率ビデオコーディング(HEVC)標準に従ってフォーマットされる。一実施形態では、符号化されたビットストリームは、高度なビデオコーディング(AVC)規格に従ってフォーマットされる。他の実施形態では、符号化されたビットストリームは、他のビデオ符号化規格に従ってフォーマットされる。
【0017】
ダウンスケール部310は、元の入力ビデオフレームからダウンスケールされたフレームを生成し、ダウンスケールされたフレームをメモリ315に伝送する。ダウンスケールされたフレームは、式330に示される関係により、ビットカウントをQPにマッピングするためのモデルを生成するために使用することができる。式330に示すように、所定のビデオフレームについて、所定のビデオフレームの低解像度バージョンのビットカウントと、所定のビデオフレームの高解像度バージョンのビットカウントと、の間の比率は、所定のQPに対して一定である。したがって、ダウンスケールされたフレームは、異なるQPでプリエンコード部320によって処理され、結果として得られるビットカウント間の関係は、元のフレームを符号化するために使用された異なるQPのビットカウント間の関係を表す。他の実施形態では、ダウンスケール部310は、ダウンスケールに加えて、又は、ダウンスケール以外に、入力ビデオフレームに対して他のタイプのフィルタリング及び/又は前処理を実施する。例えば、他の実施形態では、ダウンスケール部310は、ノイズ除去、グレースケール変換、及び/又は、他のタイプの前処理ステップを実行する。
【0018】
ダウンスケールされたフレームは、プリエンコード部320に伝送される。一実施形態では、プリエンコード部320は、異なるQPを使用して、ダウンスケールされたフレームの少なくとも2つの別個の符号化を実行する。いくつかの実施形態では、プリエンコード部320は、異なるQPを使用して、ダウンスケールされたフレームの一部の少なくとも2つの別個の符号化を実行する。次に、プリエンコード部320は、符号化されたフレームのサイズ(又は、フレームの符号化された部分のサイズ)に基づいて、出力ビットサイズをQPにマッピングするモデルを作成する。このモデルの統計情報は、「符号化統計情報」とラベル付けされ、メモリ315に記憶される。符号化統計情報もエンコーダ305に伝送される。エンコーダ305は、入力ビデオフレームに対して何れのQPを選択するかを決定する際に、符号化統計情報を使用して、結果として得られる符号化されたフレームに対する所望のビットサイズを満たす。一実施形態では、符号化されたフレームの各々についての所望のビットサイズは、エンコーダ305によって生成された符号化されたビットストリームの所望のビットレートに基づいて決定される。例えば、一実施形態では、所望のビットレートは、ビット/秒(例えば、3メガビット/秒(Mbps))で指定され、ビデオシーケンスのフレームレートは、フレーム/秒(fps)(例えば、60fps、24fps)で指定される。この実施形態では、エンコーダ305は、所望のビットレートをフレームレートで除算して、符号化されたフレームの各々について所望のビットサイズを計算する。
【0019】
他の実施形態では、符号化ロジック300は、所定のビットバジェットを満たすようにビデオデータを符号化するための最適な量子化強度を選択するために、上記の技術の変形を実行することに留意されたい。例えば、別の実施形態では、プリエンコード部320は、異なる量子化強度設定を有するフレームの一部を符号化する。次に、プリエンコード部320は、符号化された部分のビットサイズを、異なる量子化強度設定でキャプチャする。さらなる実施形態では、プリエンコード部320は、異なる量子化強度設定で2つ以上のフレームを符号化し、次に、対応する符号化されたフレームのビットサイズをキャプチャする。
【0020】
図4を参照すると、ビットカウントをQPにマッピングするグラフ400の一例が示されている。プロット410は、特定のフレーム、フレームの一部、又は、ビデオシーケンスの2つ以上のフレームを符号化するために使用されるQPの異なる値のビットカウントを表す。一実施形態では、ビットカウントとQPとの関係は、ビットカウント=α2
β×QPという式を使用してモデル化される。一実施形態では、α及びβの値は、実験によって決定される。例えば、一実施形態では、α及びβの値は、2つ以上の異なる事前符号化パスで2つ以上の異なるQPを使用して、フレームの一部又は全体をプリ符号化することによって決定される。フレームの符号化された部分又は全体のサイズがキャプチャされ、QPとキャプチャされたビットサイズとを使用して、上記の式のα及びβの値が求められる。次に、α及びβの値を使用して、ビットカウントとQPとの関係を決定するモデルを生成する。エンコーダは、所定のビデオフレームの所望のビットカウントを決定すると、モデルを使用して、所望のビットカウントを特定のQP値にマッピングする。次に、エンコーダは、所定のビデオフレームを符号化する場合に特定のQP値を使用して、所望のビットカウントを有する符号化されたビデオフレームを生成する。
【0021】
図5を参照すると、ターゲットビットカウントに一致するQP値を決定するためのグラフ500の一実施形態が示されている。一実施形態では、制御ロジック又はプリエンコード部は、異なるQP値(QP1及びQP2)を有するビデオフレームの2つの事前符号化パスを実施する。制御ロジックは、これらの2つの事前符号化パスのビットカウントをキャプチャする。他の実施形態では、制御ロジックは、異なるQP値を有するビデオフレームの2つ以上の事前符号化パスを実施する。ビットカウントb1は、QP1を有する事前符号化パスに対応し、プロット505では510とラベル付けされている。ビットカウントb2は、QP2を有する事前符号化パスに対応し、プロット505では515とラベル付けされている。QP1及びQP2を使用して事前符号化パスのビットカウントb1,b2の各々をキャプチャした後に、制御ロジックは、プロット505を生成して、ビットカウントとQPとの関係をマッピングする。次に、所望のビットカウントターゲット520が決定されると、制御ロジックは、プロット505において、ターゲット520をQP3のQP値にマッピングする。次に、エンコーダは、ビデオフレーム及び/又は1つ以上の後続のビデオフレームを符号化する場合に、QPをQP3値に設定する。或いは、エンコーダは、ビデオフレームの1つ以上の部分(例えば、ブロック、コーディングユニット)及び/又は他のビデオフレームの1つ以上の部分を符号化する場合に、QP3値を使用する。
【0022】
図6を参照すると、ビットサイズを量子化パラメータ(QP)にマッピングするモデルを生成する方法600の一実施形態が示されている。説明のために、本実施形態及び
図7のステップを順に示す。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上は、図示された順序と異なる順序で同時に実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も、必要に応じて実行される。本明細書に記載される様々なシステム又は装置の何れも、方法600を実施するように構成されている。
【0023】
プリエンコーダは、第1の量子化パラメータ(QP)設定を使用して、第1のビデオフレームの少なくとも一部の第1の符号化を実行する(ブロック605)。次に、プリエンコーダは、第1のビデオフレームの符号化された部分の第1のビットサイズをキャプチャする(ブロック610)。「ビットサイズ」という用語は、本明細書では「ビットカウント」とも呼ばれることに留意されたい。次に、プリエンコーダは、第2のQP設定を使用して、第1のビデオフレームの少なくとも一部の第2の符号化を実行する(ブロック615)。ここでは、第2のQP設定が第1のQP設定と異なると想定する。第1及び第2の符号化は、「事前符号化」とも呼ばれることに留意されたい。次に、プリエンコーダは、第1のビデオフレームの符号化された部分の第2のビットサイズをキャプチャする(ブロック620)。次に、プリエンコーダは、第1及び第2のQPと第1及び第2のビットサイズとの間の関係に基づいて、ビットサイズをQPにマッピングするためのモデルを生成する(ブロック625)。ブロック625の後に、方法600は終了する。「モデル」は、本明細書では「マッピング」とも呼ばれることに留意されたい。一実施形態では、モデルは、ビットサイズ=α2β×QPという式におけるα及びβの値を求めることによって生成される。例えば、α及びβの値は、第1及び第2のQPをそれぞれ使用する第1及び第2の符号化によって生成された第1及び第2のビットサイズを使用して求められる。他の実施形態では、モデルは、他の技術を使用して生成される。
【0024】
いくつかの実施形態では、プリエンコーダは、2つ以上の異なるQP設定を有する2つ以上の異なる符号化を実行する。次に、プリエンコーダは、2つ以上の異なるQP設定(及び、対応するビットサイズ)を使用して、QP対ビットサイズのモデルを生成する。方法600は、実施形態に応じて、定期的又は周期的に実施することができることに留意されたい。一実施形態では、方法600は、所定のビデオフレームの各々の部分に対して実施される。別の実施形態では、方法600は、ビデオストリームのビデオフレーム毎に実施される。さらなる実施形態では、方法600は、N個のビデオフレーム毎に1回実施され、Nは、1より大きい正の整数である。方法600が実施される頻度は、1つ以上の要因に基づいてこれらの実施例の間で交互に行うことができる。他の実施形態では、方法600の後続の反復は、他のスケジュールに従って実施される。
【0025】
図7を参照すると、ビデオフレームを符号化する方法の一実施形態が示されている。エンコーダは、符号化されるビデオフレームを受信する(ブロック705)。エンコーダは、ビデオフレームの好ましい符号化ビデオフレームサイズを決定する(ブロック710)。実施形態に応じて、エンコーダは、別の処理ユニットから好ましい符号化ビデオフレームサイズを受信し、エンコーダは、レジスタ又は他のメモリ位置から、好ましい符号化ビデオフレームサイズを取得し、エンコーダは、符号化ビットストリームのターゲットビットレートに基づいて、好ましい符号化ビデオフレームサイズを計算し、又は、エンコーダは、他の方法で、好ましい符号化ビデオフレームサイズを決定する。
【0026】
エンコーダは、符号化ビデオフレームサイズとQPとの間のマッピングに基づいて、受信したビデオフレームを符号化するために選択されるQPを決定する(ブロック715)。ビットサイズをQPにマッピングするマッピングを生成する方法の一例は、(
図6の)方法600に関して上述されている。次に、エンコーダは、QPを、好ましい符号化ビデオフレームサイズのモデルによって提供されるQP値に設定することによって、符号化ビデオフレームを生成し、符号化ビデオフレームは、受信したビデオフレームを表す(ブロック720)。実施形態に応じて、マッピングは、様々な方法で実施される。一実施形態では、マッピングは、ソフトウェアアプリケーションによって直接設定される。別の実施形態では、マッピングは、複数の実験を行うことによって得られるルックアップテーブルプロセスとして実施される。さらなる実施形態では、マッピングは、刺激アプライヤ(stimuli applier)がシステムを所望の結果(例えば、好ましいビットレート)に近づけるかどうかをチェックする閉ループ制御方法として実施される。他の実施形態では、マッピングは、機械学習技術、ニューラルネットワーク、回帰モデル、又は、品質メトリック(例えば、ピーク信号対雑音比(PSNR)、構造類似性(SSIM)インデックス、ビデオマルチメソッド評価融合(VMAF)等)を使用する他のタイプのモデルを使用して実施され、知覚品質に影響を与える設定を最適化する。
【0027】
ブロック720の後に、エンコーダは、符号化ビデオフレームを、デコーダに伝送して表示する(ブロック725)。ブロック725の後に、方法700は終了する。なお、方法700は、エンコーダによって受信されたビデオフレーム毎に繰り返すことができる。マッピングは、後続のビデオフレームの各部分、後続のビデオフレーム毎、又は、2つ以上のビデオフレームが符号化された後に更新することができることに留意されたい。
【0028】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載された方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態において、そのようなプログラム命令は、高水準プログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ、中間又は他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令を、C等の高水準のプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することができる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行することができる1つ以上のプロセッサと、を含む。
【0029】
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に認識されると、当業者には多数の変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。