(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-26
(45)【発行日】2024-10-04
(54)【発明の名称】入力ビデオをハイブリッドビデオストリームとして符号化する方法およびそれを実行するエンコーダを備えるシステム
(51)【国際特許分類】
H04N 19/33 20140101AFI20240927BHJP
H04N 19/126 20140101ALI20240927BHJP
H04N 19/152 20140101ALI20240927BHJP
H04N 19/162 20140101ALI20240927BHJP
H04N 19/176 20140101ALI20240927BHJP
H04N 19/187 20140101ALI20240927BHJP
【FI】
H04N19/33
H04N19/126
H04N19/152
H04N19/162
H04N19/176
H04N19/187
(21)【出願番号】P 2021556458
(86)(22)【出願日】2019-12-13
(86)【国際出願番号】 GB2019053551
(87)【国際公開番号】W WO2020188230
(87)【国際公開日】2020-09-24
【審査請求日】2022-09-05
(32)【優先日】2019-03-20
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2019-03-23
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2019-03-29
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2019-04-15
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2019-07-05
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】521151072
【氏名又は名称】ヴイ-ノヴァ インターナショナル リミテッド
【氏名又は名称原語表記】V-NOVA INTERNATIONAL LIMITED
【住所又は居所原語表記】1 Sheldon Square,Paddington,London Greater London W2 6TT,UNITED KINGDOM
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】マーディ,グイド
(72)【発明者】
【氏名】チッカレッリ,ロレンツォ
【審査官】田中 純一
(56)【参考文献】
【文献】特開2012-114928(JP,A)
【文献】米国特許出願公開第2012/0201301(US,A1)
【文献】特開2018-110412(JP,A)
【文献】米国特許出願公開第2014/0064386(US,A1)
【文献】特開2013-251903(JP,A)
【文献】米国特許出願公開第2013/0322524(US,A1)
【文献】特開2015-167267(JP,A)
【文献】Yang Liu, Zheng Guo Li, Yeng Chai Soh,Rate Control of H.264/AVC Scalable Extension,IEEE Transactions on Circuits and Systems for Video Technology ( Volume: 18, Issue: 1, January 2008),IEEE,2008年01月28日,pp.116-121
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
入力ビデオをハイブリッドビデオストリームとして符号化する方法であって、
第1の解像度の前記入力ビデオを受信することと、
前記符号化のための所望の品質レベルの表示を取得することであって、前記所望の品質レベルが、前記ハイブリッドビデオストリームに対して1つ以上のビットレートを設定し、前記ハイブリッド
ビデオストリームが、第2の解像度の符号化されたベースストリームと、前記第1の解像度および前記第2の解像度の各々の複数の強化ストリームと、を含み、前記第1の解像度が、前記第2の解像度よりも高い、取得することと、
前記複数の強化ストリームの各々を、
前記入力ビデオと前記強化ストリームの前記それぞれの解像度の再構成されたビデオとの間の差異に基づいて、残差のセットを生成すること、
前記所望の品質レベルに基づいて、前記残差のセットに対する量子化パラメータを決定すること、
前記量子化パラメータに基づいて、前記残差のセットを量子化すること、および
前記量子化された残差のセットから、符号化されたストリームを作成すること、によって、符号化することと、を含み、
所与の強化ストリームに対する前記量子化パラメータが、前記強化ストリームに対する量子化パラメータの前のセットに基づく、方法。
【請求項2】
前記符号化されたベースストリーム、および前記複数の強化ストリームのうちの少なくとも1つが、異なるレベルの量子化を使用して符号化される、請求項1に記載の方法。
【請求項3】
前記符号化されたベースストリーム、および前記複数の強化ストリームのうちの1つ以上が、独立して符号化される、請求項1または2に記載の方法。
【請求項4】
前記入力ビデオをダウンサンプリングして、前記第2の解像度のダウンサンプリングされたビデオを作成することと、
第1のベースエンコーダを使用して、前記符号化されたベースストリームを作成するように、前記ダウンサンプリングされたビデオの符号化を命令することと、を含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記複数の強化ストリームの各々の前記符号化が、フレームごとに実行され、各フレームについて、および前記強化ストリームの各々について、
前記強化ストリームの前記それぞれの解像度のビデオのフレームを再構成することと、
前記再構成されたビデオのフレームを、前記強化ストリームの前記それぞれの解像度の、前記入力ビデオから導出されたフレームと比較することと、
前記比較に基づいて、前記ビデオのフレームに対する残差のセットを生成することと、を含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
量子化パラメータを決定することが、
前記複数の符号化されたストリームおよび前記符号化されたベースストリームのうちの1つ以上を受信するバッファのステータスを受信することと、
前記ステータスを使用して、前記量子化パラメータを決定することと、を含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
量子化パラメータを決定することが、
前記バッファのサイズおよび前記バッファに記憶されたデータの量に基づいて、前記バッファの容量を判定することを含み、
前記量子化パラメータが、前記所望の品
質レベルおよび前記バッファの前記判定された容量に基づいて決定される、請求項6に記載の方法。
【請求項8】
所与の強化ストリームに対する前記残差のセットに対する量子化パラメータを決定することが、
前記所与の強化ストリームに対する前記残
差のセットを符号化するために必要とされるデータの量を判定することと、
前記判定されたデータの量を、前記バッファの前記判定された容量と比較することと、
前記比較に基づいて、量子化パラメータの初期セットを調整することと、を含む、請求項7に記載の方法。
【請求項9】
前記量子化された残差のセットの推定サイズを、前記バッファの前記容量と比較することと、
前記比較に応答して、量子化のためのステップ幅を変動させて、前記量子化された残差のセットの前記推定サイズを増加または減少させることと、を含む、請求項7または8に記載の方法。
【請求項10】
前記バッファが、前記符号化されたベースストリームおよび前記複数の強化ストリームからの入力を可変ビットレートで受信するように、かつ一定のビットレートで出力を提供するように構成されている、請求項6から9のいずれか一項に記載の方法。
【請求項11】
前記所望の品質レベルに基づいて、前記残差のセットに対する量子化パラメータを決定することが、
ビットレート制約のセット内で前記所望の品質レベルを提供する量子化パラメータを決定することを含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記所望の品質レベルに基づいて、前記残差のセットに対する量子化パラメータを決定することが、前記複数の強化
ストリームの各々に対して、
前記残差のセットの前記量子化のためのステップ幅を決定することを含む、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記残差のセットに対する量子化パラメータを決定することが、
ビデオの前のフレームと関連付けられた残差のセットに対する量子化パラメータの初期セットを受信することと、
前記ハイブリッドビデオストリームのためのバッファからの入力を受信することと、
前記符号化されたベースストリームを符号化するために使用されるベースエンコーダからの入力を受信することと、
前記入力に基づいて、前記量子化パラメータの初期セットを調整して、ビデオの現在のフレームと関連付けられた残差のセットに対する量子化パラメータのセットを決定することと、を含む、請求項1から12のいずれか一項に記載の方法。
【請求項14】
量子化パラメータを決定するステップが、
前記符号化されたベースストリームを符号化するために使用されるベースエンコーダのステータスを受信することと、
前記ステータスを使用して、前記量子化パラメータを決定することと、を含む、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記入力ビデオの複数のフレームが、符号化され、前記量子化パラメータが、フレームごとに前記複数のフレームの各々に対して決定される、請求項1から14のいずれか一項に記載の方法。
【請求項16】
データのフレームに対する前記決定された量子化パラメータが、ビデオデータの後続フレームに対する初期量子化パラメータとして使用される、請求項15に記載の方法。
【請求項17】
前記フレームに対する量子化パラメータが、前記フレームのターゲットデータサイズおよび前記フレームの現在のデータサイズに基づいて決定され、前記フレームの前記現在のデータサイズが、量子化パラメータの前のセットを使用して、決定される、請求項16に記載の方法。
【請求項18】
システムであって、請求項1から17のいずれか一項の方法を実行するように構成されたエンコーダを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、信号を符号化するための方法および装置に関する。具体的には、限定されないが、本開示は、ビデオおよび/または画像信号を符号化するための方法および装置に関する。本開示は、符号化プロセス中のレート制御のためのレート制御方法論および装置に関する。
【背景技術】
【0002】
データ、例えば、ビデオデータを符号化するとき、データの一部分を符号化するために必要とされるビット数を設定することが知られている。ビデオデータの場合、これは、ビデオデータのフレームを符号化するためのビット数であり得る。必要とされるビット数の設定は、レート制御として知られている。ビットレートを定数、または変数値に設定することが知られている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
レート制御の既知の形態は、データレートが、符号化の所望の品質を達成または維持するように調整される、「固定レート係数」、すなわちCRFを使用する。したがって、ビデオ符号化において、ビットレートは、符号化されるシーンの複雑さに応じて、増加または減少し得る。より複雑なシーンでは、同じ品質レベルのあまり複雑でないシーンよりも、所与の品質のレベルを符号化するためにより多くのデータを必要とすることになる。したがって、CRFは、固定ビットレート符号化で見出されるような固定ビットレートを維持するのと比較して、符号化するときに一定の品質レベルを維持することになる。品質のレベルおよび品質レベルという用語は、互換的に使用される。
【課題を解決するための手段】
【0004】
添付の特許請求の範囲で述べられるように、方法、コンピュータプログラム、コンピュータ可読媒体、およびエンコーダが提供される。
【0005】
実施形態では、入力ビデオをハイブリッドビデオストリームとして符号化する方法が提供され、この方法は、第1の解像度の入力ビデオを受信することと、符号化のための所望の品質レベルの表示を取得することであって、所望の品質レベルが、ハイブリッドビデオストリームに対して1つ以上のビットレートを設定し、当該ハイブリッドストリームが、第2の解像度の符号化されたベースストリームと第1の解像度および第2の解像度の各々の複数の強化ストリームとを含み、第1の解像度が前記第2の解像度よりも高い、取得することと、複数の強化ストリームの各々を、入力ビデオと強化ストリームのそれぞれの解像度の再構成されたビデオとの間の差異に基づいて、残差のセットを生成すること、所望の品質レベルに基づいて、残差のセットに対する量子化パラメータを決定すること、量子化パラメータに基づいて、残差のセットを量子化すること、および量子化された残差のセットから符号化されたストリームを作成すること、によって、符号化することと、を含む。
【0006】
この方法は、レート制御を、所望の品質レート、すなわちビットレートに従って設定することを可能にする。この方法は、ハイブリッドストリームに使用されるため、この方法は、2つの異なる強化ストリームの量子化を設定することを可能にする。
【0007】
本発明の他の態様は、添付の特許請求の範囲セットから明らかになるであろう。
【0008】
ここで、添付の図面を参照して、1つ以上の実施例について記載する。
【図面の簡単な説明】
【0009】
【
図1】第1のレベルの詳細の例示的なエンコーダのブロック図を示す。
【
図2】第1のレベルの詳細の例示的なデコーダのブロック図を示す。
【
図3】第2のレベルの詳細の例示的なエンコーダのブロック図を示す。
【
図4】第1の実施例によるレートコントローラのブロック図を示す。
【
図5】第2の実施例によるレートコントローラのブロック図を示す。
【
図6】実施例による強化レートコントローラのブロック図を示す。
【
図7A】第1の強化ストリームのためにエンコーダ内で使用されている例示的なレートコントローラのブロック図を示す。
【
図7B】複数の強化ストリームのためにエンコーダ内で使用されている例示的なレートコントローラのブロック図を示す。
【
図8】第3の実施例によるレートコントローラのブロック図を示す。
【
図9】第4の実施例によるレートコントローラのブロック図を示す。
【
図10B】可変デッドゾーンで量子化を適用する実施例を示す。
【
図11】実施例によるレート制御方法を示すフロー図である。
【発明を実施するための形態】
【0010】
本開示は、ハイブリッド後方互換性コーディング技術について記載する。この技術は、異なるビデオコーディングフォーマット、ベースコーデック(すなわち、エンコーダデコーダ)、(例えば、AVC/H.264、HEVC/H.265、または任意の他の現在もしくは将来のコーデック、ならびにVP9、AV1などの非標準アルゴリズム)を、少なくとも2つの強化レベルのコーディングされたデータと組み合わせる、柔軟で、適応可能で、高効率で、かつ計算コストの低いコーディングフォーマットである。
【0011】
符号化スキームの一般的な構造は、ベースコーデックで符号化されたダウンサンプリングされたソース信号を使用し、ベースコーデックの復号化された出力に第1のレベルの補正または強化データを追加して、補正されたピクチャを生成し、次いで、補正されたピクチャのアップサンプリングされたバージョンにさらなるレベルの補正または強化データを追加する。
【0012】
したがって、本明細書に記載される特定の実施例は、信号を、データストリームのセット、すなわち経時的に変化するデータ、に符号化するように作用する。特定の実施例は、典型的に2つの強化ストリームが存在する、ベースストリームおよび1つ以上の強化ストリームを含むストリームのセットを生成するエンコーダまたは符号化プロセスに関する。ベースストリームは、ハードウェアデコーダによって復号化され得る一方、強化トストリームは、適切な電力消費でのソフトウェア処理実装に適切であり得る。
【0013】
特定の実施例は、高い柔軟性および多くの状況への適応性を可能にする複数の自由度を作り出すことで、コーディングフォーマットをオーバーザトップ(OTT)送信、ライブストリーミング、ライブUHD放送などを含む多くのユースケースに適切なものにする符号化構造を提供する。それはまた、低複雑性ビデオコーディングを提供する。
【0014】
典型的には、本明細書でハイブリッドストリームと呼ばれ得るストリームのセットは、復号化され、組み合わされて、視聴のための出力信号を生成する。これは、元の入力ビデオ信号と同じ解像度の出力再構成ビデオ信号を含み得る。ベースコーデックの復号化された出力は、視聴を意図されていないが、より低い解像度の完全に復号化されたビデオであり、出力を既存のデコーダと互換性があるものにし、適切と考えられる場合には、より低い解像度の出力としても使用可能である。ベースストリームおよび第1の強化ストリームは、補正されたより低解像度のビデオストリームとして視聴するためにさらに復号化され、組み合わされ得る。
【0015】
本明細書に記載される例示的なビデオコーディング技術は、最小数の比較的単純なコーディングツールを使用する。相乗的に組み合わされた場合、これらのコーディングツールは、ベースコーデックで符号化されたフル解像度のピクチャと比較して、視覚的品質の改善を提供すると同時に、これらのコーディングツールが使用され得る方法に柔軟性を生み出すことができる。
【0016】
方法および装置は、既存の符号化および/または復号化アルゴリズム(例えば、AVC/H.264、HEVC/H.265などのMPEG標準、ならびにVP9、AV1などの非標準アルゴリズム)の上に構築される全体的なアプローチに基づいており、アルゴリズムは強化層のベースラインとして機能する。強化層は、異なる符号化および/または復号化アプローチに従って機能する。全体的なアプローチの背後にある考え方は、MPEGファミリーのアルゴリズムで使用されるようなブロックベースのアプローチを使用することとは対照的に、ビデオフレームを階層的に符号化/復号化することである。フレームを階層的に符号化することは、全フレーム、およびその後に低減されるかまたは間引かれたフレームなどについて、残差を生成することを含む。
【0017】
例示的な符号化プロセスが、
図1のブロック図に描示されている。入力フル解像度ビデオを処理して、様々な符号化されたストリームを生成する。符号化されたベースストリームは、ベースコーデック(例えば、AVC、HEVC、または任意の他のコーデック)に入力ビデオのダウンサンプリングされたバージョンを供給することによって生成される。符号化されたベースストリームは、ベースコーデックのベースエンコーダの出力を含み得る。強化層の第1の符号化されたストリーム(符号化されたレベル1ストリーム)は、再構成されたベースコーデックビデオと、入力ビデオのダウンサンプリングされたバージョンと、の間の差異を取ることによって得られた残差を処理することによって生成される。符号化されたベースストリームを再構成することは、ベースコーデックから復号化ベースストリームを受信することを含み得る。強化層の第2の符号化されたストリーム(符号化されたレベル2ストリーム)は、再構成されたベースコーディングされたビデオの補正されたバージョンのアップサンプリングされたバージョンと、入力ビデオとの間の差異を取ることによって得られた残差を処理することによって生成される。
【0018】
場合によっては、
図1の構成要素は、汎用の低複雑性エンコーダを提供し得る。場合によっては、強化ストリームは、低複雑性エンコーダの一部を形成する符号化プロセスによって生成され得、低複雑性エンコーダは、独立したベースエンコーダおよびデコーダ(例えば、ベースコーデックとしてパッケージ化された)を制御するように構成され得る。他の場合には、ベースエンコーダおよびデコーダは、低複雑性エンコーダの一部として供給され得る。ある場合には、
図1の低複雑性エンコーダは、ベースコーデックのラッパーの一形態と見なされ得、ベースコーデックの機能は、低複雑性エンコーダを実装するエンティティから隠され得る。
【0019】
例示的な復号化プロセスが、
図2のブロック図に描示されている。復号化プロセスは、
図1の例示的な符号化プロセスに対する補完プロセスであり得る。デコーダは、エンコーダによって生成された3つのストリームを、さらなる復号化情報を含むヘッダとともに受信する。符号化されたベースストリームは、エンコーダで使用されるベースコーデックに対応するベースデコーダによって復号化され、その出力が、符号化されたレベル1ストリームから得られた復号化された残差と組み合わされる。組み合わされたビデオが、アップサンプリングされ、符号化されたレベル2ストリームから得られた復号化された残差とさらに組み合わされる。
【0020】
図1に目を向けると、一般的なレベルの例示的なエンコーダトポロジは、以下のとおりである。エンコーダ100は、入力信号10を受信するための入力Iを備える。入力信号10は、フル(または最高)解像度ビデオを含み得、エンコーダがフレームごとに適用される。入力Iは、ダウンサンプラ105Dおよび処理ブロック100-2に接続されている。ダウンサンプラ105Dは、エンコーダ100のベースレベルでベースコーデック120に出力する。ダウンサンプラ105Dはまた、処理ブロック100-1にも出力する。処理ブロック100-1は、出力をアップサンプラ105Uに渡し、アップサンプラ105Uは、次に、処理ブロック100-2に出力する。処理ブロック100-2および100-1の各々は、以下のモジュール、すなわち、変換ブロック110、量子化ブロック120、およびエントロピー符号化ブロック130のうちの1つ以上を備える。
【0021】
ベースストリームは、上述のようなプロセスによって実質的に作成される。すなわち、入力ビデオがダウンサンプリングされる(すなわち、入力ビデオにダウンサンプリング演算を適用して、ダウンサンプリングされた入力ビデオを生成する。次いで、ダウンサンプリングされたビデオが、第1のベースコーデックを使用して符号化される(すなわち、ダウンサンプリングされた入力ビデオに符号化演算を適用して、第1のまたはベースコーデックを使用して、符号化されたベースストリームを生成する)。好ましくは、第1のまたはベースコーデックは、ハードウェア復号化に適したコーデックである。符号化されたベースストリームは、ベース層またはベースレベルと呼ばれることがある。
【0022】
上述のように、強化ストリームは、2つのストリームを含み得る。第1のレベルの強化は、補正データのセットを提供し、この補正データのセットが、ベースストリームの復号化されたバージョンと組み合わされて、補正されたピクチャを生成し得る。この第1の強化ストリームは、符号化されたレベル1ストリームとして
図1および
図3に示されている。
【0023】
符号化されたレベル1ストリームを生成するために、符号化されたベースストリームが、復号化される(すなわち、符号化されたベースストリームに復号化演算を適用して、復号化されたベースストリームを生成する)。次いで、復号化されたベースストリームとダウンサンプリングされた入力ビデオとの間の差異が、作成される(すなわち、ダウンサンプリングされた入力ビデオおよび復号化されたベースストリームに減算演算を適用して、第1のセットの残差を生成する)。ここで、残差という用語は、当該技術分野において知られているもの、すなわち、参照フレームと再構成されたフレームとの間の誤差と同様に使用される。ここで、再構成されたフレームは、復号化されたベースストリームであり、参照フレームは、ダウンサンプリングされた入力ビデオである。したがって、第1の強化レベルで使用される残差は、これらの残差が、復号化されたベースストリームを、ベース符号化演算で使用されたダウンサンプリングされた入力ビデオに「補正」するので、補正されたビデオと見なされ得る。次いで、第1のセットの残差を、第1の符号化ブロック100-1(第1のエンコーダまたは第1の強化エンコーダとも呼ばれ得る)を使用して符号化して、符号化されたレベル1ストリームを生成する(すなわち、第1のセットの残差に符号化演算を適用して、第1の強化ストリームを生成する)。
【0024】
図2は、
図1に示される符号化プロセスに対応し得る、復号化プロセスのブロック図である。復号化プロセスは、破線によって示されるように、2つに分割されている。破線の下には、デコーダ200のベースレベルがある。ベースレベルは、ハードウェアで有用に実装され得る。破線の上には、ソフトウェアで有用に実装され得る強化レベルがある。デコーダ200は、必要に応じて、強化レベルプロセスのみ、またはベースレベルプロセスと強化レベルプロセスとの組み合わせを備え得る。デコーダ200は、特に強化レベルで、ソフトウェアで有用に実装され得、レガシーな復号化技術、特にレガシーなハードウェア技術の上に適切に鎮座し得る。レガシーな技術とは、既に市場に存在し、交換するのに不便および/または高価であり、依然として信号を復号化する目的を果たし得る、以前に開発および販売されたより古い技術を意味する。他の場合には、ベースレベルは、任意の既存および/または将来のビデオ符号化ツールまたは技術を含み得る。
【0025】
一般的なレベルでのデコーダトポロジは以下のとおりである。デコーダ200は、符号化されたベースストリーム、符号化されたレベル1ストリーム、および符号化されたレベル2ストリームを含む1つ以上の入力信号を、さらなる復号化情報(ローカルおよびグローバルな構成情報など)を含む任意選択のヘッダとともに受信するための入力(図示せず)を備える。デコーダ200は、ベースレベルのベースデコーダ220と、強化レベルの処理ブロック200-1および200-2と、を備える。ベースデコーダ220は、適用されるベースコーデック(例えば、ベースコーデックの復号化機能または単位)の一部を形成し得る。アップサンプラ205Uもまた、処理ブロック200-1と、処理ブロック200-2との間に提供され、処理ブロック200-1によって出力される信号のアップサンプリングされたバージョンを処理ブロック200-2に提供する。
【0026】
デコーダ200は、1つ以上の入力信号を受信し、エンコーダ100によって生成された3つのストリームを方向付ける。符号化されたベースストリームは、エンコーダ100で使用されるベースコーデック120に対応し、かつベースレベルで符号化プロセスを逆転させるように作用するベースデコーダ220に方向付けられ、ベースデコーダ220によって復号化される。符号化されたレベル1ストリームは、デコーダ200のブロック200-1によって処理され、エンコーダ100によって作成された第1の残差を再作成する。ブロック200-1は、エンコーダ100内の処理ブロック100-1に対応し、ベーシックレベルで、ブロック100-1の処理を逆転させるか、または実質的に逆転させるように作用する。ベースデコーダ220の出力は、符号化されたレベル1ストリームから得られた第1の残差と組み合わされる。組み合わされた信号が、アップサンプラ205Uによってアップサンプリングされる。符号化されたレベル2ストリームが、ブロック200-2によって処理され、エンコーダ100によって作成されたさらなる残差を再作成する。ブロック200-2は、エンコーダ100の処理ブロック100-2に対応し、ベーシックレベルで、ブロック100-2の処理を逆転させるか、または実質的に逆転させるように作用する。アップサンプラ205Uからのアップサンプリングされた信号が、符号化されたレベル2ストリームから得られたさらなる残差と組み合わされて、入力信号10のレベル2再構成を生成する。入力信号10のレベル2再構成は、元の入力ビデオと同じ解像度の復号化ビデオとして使用され得る。本明細書に記載される符号化および復号化は、エンコーダおよびデコーダの構成に応じて、元の入力信号10の損失あり、または損失なしの再構成を生成し得る。多くの場合、入力信号10のレベル2再構成は、損失が、復号化されたビデオの知覚に低減されたまたは最小限の影響を有する、元の入力ビデオの損失ありの再構成であり得る。
【0027】
上述のように、強化ストリームは、2つのストリーム、すなわち、符号化されたレベル1ストリーム(第1のレベルの強化)および符号化されたレベル2ストリーム(第2のレベルの強化)を含み得る。符号化されたレベル1ストリームは、補正データのセットを提供し、この補正データのセットが、ベースストリームの復号化されたバージョンと組み合わされて、補正されたピクチャを生成し得る。符号化されたレベル2ストリームは、復号化されたレベル1ストリームと復号化されたベースストリームとを組み合わせることによって生成された補正されたピクチャに細かい詳細を追加する補正または強化データのセットを提供する。
【0028】
図3は、
図1の符号化プロセスをより詳細に示す。符号化されたベースストリームは、ベースエンコーダ120Eによって直接作成され、必要に応じて、量子化およびエントロピー符号化され得る。場合によっては、これらの後者のプロセスは、ベースエンコーダ120Eによる符号化の一部として実行され得る。符号化されたレベル1ストリームを生成するために、符号化されたベースストリームが、エンコーダ100で復号化される(すなわち、ベース復号化ブロック120Dにおいて復号化演算が、符号化されたベースストリームに適用される)。ベース復号化ブロック120Dは、エンコーダ100のベースレベルの一部として示され、対応するベース符号化ブロック120Eとは別個に示されている。例えば、ベースデコーダ120Dは、ベースコーデックを有するベースエンコーダ120Eの形態で符号化コンポーネントを補完する復号化コンポーネントであってもよい。他の実施例では、ベース復号化ブロック120Dは、代わりに、強化レベルの一部であり得、特に、処理ブロック100-1の一部であり得る。
【0029】
図3に戻ると、ベース復号化ブロック120Dから出力される復号化されたベースストリームと、ダウンサンプリングされた入力ビデオと、の間の差異が作成される(すなわち、ダウンサンプリングされた入力ビデオおよび復号化されたベースストリームに減算演算110-Sを適用して、第1のセットの残差を生成する)。ここで、残差という用語は、当該技術分野において知られているものと同様に使用され、すなわち、残差は、参照信号またはフレームと、再構成された信号またはフレームと、の間の誤差または差異を表す。ここで、再構成された信号またはフレームは、復号化されたベースストリームであり、参照信号またはフレームは、ダウンサンプリングされた入力ビデオである。したがって、第1の強化レベルで使用される残差は、その残差が、将来の復号化されたベースストリームを、ベース符号化演算で使用されたダウンサンプリングされた入力ビデオのより近い近似となるように「補正」することができるので、補正信号と見なされ得る。これは、ベースコーデックの癖または他の特異性を補正し得るので、有用である。これらには、とりわけ、ベースコーデックによって適用される動き補償アルゴリズム、ベースコーデックによって適用される量子化およびエントロピー符号化、ならびにベースコーデックによって適用されるブロック調整が含まれる。
【0030】
図1のブロック100-1の構成要素が、
図3により詳細に示されている。特に、第1のセットの残差が、変換され、量子化され、およびエントロピー符号化されて、符号化されたレベル1ストリームを生成する。
図3では、変換演算110-1が、第1のセットの残差に適用され、量子化演算120-1が、残差の変換されたセットに適用されて、量子化された残差のセットを生成し、エントロピー符号化演算130-1が、残差の量子化されたセットに適用されて、第1のレベルの強化で符号化されたレベル1ストリームを生成する。しかしながら、他の実施例では、量子化ステップ120-1のみが実行され得るか、または変換ステップ110-1のみが実行され得ることに留意されたい。エントロピー符号化は、使用されなくてもよいか、または任意選択で、変換ステップ110-1および量子化ステップ120-1のうちの一方または両方に追加して使用されてもよい。エントロピー符号化演算は、ハフマン符号化演算、またはランレングス符号化(RLE)演算、またはハフマン符号化演算とRLE演算との両方の組み合わせなど、任意の適切なタイプのエントロピー符号化であり得る。
【0031】
上述のように、強化ストリームは、符号化されたレベル1ストリーム(第1のレベルの強化)と、符号化されたレベル2ストリーム(第2のレベルの強化)を含み得る。第1のレベルの強化は、ベースレベルの補正されたビデオを可能にする、すなわち、例えば、エンコーダの癖を補正することを可能にすると見なされ得る。第2のレベルの強化は、補正されたビデオを元の入力ビデオまたはそれに近い近似に変換するために使用可能な、さらなるレベルの強化であると見なされ得る。例えば、第2のレベルの強化は、ダウンサンプリング中に失われた細かい詳細を追加し得、および/または変換演算110-1および量子化演算120-1のうちの1つ以上によって導入された誤差からの補正に役立ち得る。
【0032】
図1および
図3に示される構成要素は、例えば、特定のレベルの解像度でのフレームの2×2または4×4部分に対応する、データのブロックまたはコーディング単位に対して動作し得ることに留意されたい。構成要素は、いかなるブロック間依存性もなく動作し、したがって、構成要素は、フレーム内の複数のブロックまたはコーディング単位に並列に適用され得る。これは、ブロック間に依存性(例えば、空間依存性または時間依存性のいずれか)がある比較ビデオ符号化スキームとは異なる。比較ビデオ符号化スキームの依存性は、並列性のレベルを制限し、はるかに高い複雑さを必要とする。
【0033】
好ましくは、変換演算110-1は、アダマールベースの変換などの方向分解変換(directional decomposition transform)である。一般に、変換は、残差要素の平坦化された(すなわち、1つの次元配列)ブロック(例えば、入力信号内の色成分チャネルなどのピクチャ要素のブロックに対応する)に適用される変換行列を使用して適用され得る。上記のように、これらのブロックは、エンコーダおよびデコーダ処理が適用される基本的な単位であるため、コーディング単位と呼ばれることもある。2×2コーディング単位については、4×4アダマール行列が適用され得、4×4コーディング単位については、16×16アダマール行列が適用され得る。これらの2つの変換形態は、方向分解(DD)変換および方向分解二乗(DDS)変換と呼ばれることがある。後者の変換は、いわゆる、方向分解変換の繰り返し適用と見なされ得る。両方とも、残差に直接適用される小さいカーネルを有する。
【0034】
実施例として、第1の変換は、残差(R)の平坦化された2×2ブロックに適用される4×4カーネルを有する。結果として得られる係数(C)は、以下のように決定され得る。
【0035】
【0036】
これに続いて、第2の変換は、4×4ブロックの残差に適用される16×16カーネルを有する。結果として得られる係数は、以下のとおりである。
【0037】
【0038】
好ましくは、量子化演算120-1は、線形量子化器を使用して実行される。線形量子化器は、可変サイズのデッドゾーンを使用し得る。これは、
図10Aおよび
図10Bを参照してより詳細に後述される。
【0039】
ある場合には、本明細書に記載される、
図1および
図3のエンコーダ100、ならびに
図2のデコーダ200は、ビデオ信号の異なる色成分を反映する、いわゆるデータ平面に適用され得る。例えば、本明細書に記載される成分および方法は、異なるカラーチャネルを反映する、異なるYUVまたはRGBデータ平面に適用され得る。異なるカラーチャネルは、並行して処理され得る。したがって、本明細書に記載されるとき、残差のセットへの言及は、各色成分が、組み合わされた強化ストリームの一部を形成する残差の異なるセットを有する、残差の複数のセットを含み得る。
【0040】
図1および
図3の両方を参照すると、符号化されたレベル2ストリームを生成するために、ブロック100-2において、残差のさらなるセットを生成および符号化することによって、さらなるレベルの強化情報が作成される。残差のさらなるセットは、復号化されたベースストリームの補正されたバージョンの(アップサンプラ105Uを介して)アップサンプリングされたバージョン(参照信号またはフレーム)と、入力信号10(所望の信号またはフレーム)との間の差異である。
【0041】
デコーダ200で生成されるような復号化されたベースストリームの補正されたバージョンの再構成を達成するために、ブロック100-1の処理ステップの少なくとも一部が、デコーダ200のプロセスを模倣し、かつ変換および量子化プロセスの少なくともいくつかの損失および癖を考慮するように、逆転される。このために、ブロック100-1は、逆量子化ブロック120-1iおよび逆変換ブロック110-1iを備える。量子化された第1のセットの残差が、逆量子化ブロック120-1iで逆量子化され、エンコーダ100内の逆変換ブロック110-1iで逆変換されて、第1のセットの残差のデコーダ側バージョンを再生成する。アップサンプラ105Uへの入力を再構成するために、他のフィルタリング演算が追加的に実行されてもよい。
【0042】
デコーダ120Dからの復号化されたベースストリームが、第1のセットの残差のデコーダ側バージョンと組み合わされる(すなわち、復号化されたベースストリームおよび第1のセットの残差のデコーダ側バージョンに対して合計演算110-Cを実行する)。合計演算110-Cは、デコーダでおそらく生成されるような、入力ビデオのダウンサンプリングされたバージョンの再構成-すなわち、レベル1の解像度の再構成されたビデオ)を生成する。
図1および
図3に示されるように、次いで、再構成されたベースコーデックビデオが、アップサンプラ105Uによってアップサンプリングされる。
【0043】
次いで、アップサンプリングされた信号(すなわち、再構成された信号またはフレーム)が、入力信号10(すなわち、所望のまたは参照信号またはフレーム)と比較され、残差の第2のまたはさらなるセットを作成する(すなわち、アップサンプリングされた再作成されたストリームに差異演算100-Sを適用して、残差のさらなるセットを生成する)。次いで、残差のさらなるセットが、ブロック100-2で処理されて、符号化されたレベル2ストリームとなる(すなわち、次いで、残差のさらなるセットに符号化演算を適用して、符号化されたさらなる強化ストリームを生成する)。
【0044】
特に、残差のさらなるセットが、変換される(すなわち、残差のさらなるセットに対して変換演算110-2を実行して、残差のさらなる変換されたセットを生成する)。次いで、変換された残差が、第1のセットの残差に関して上述した方法で、量子化およびエントロピー符号化される(すなわち、残差の変換されたセットに量子化演算120-2を適用して、量子化された残差のさらなるセットを生成し、残差の量子化されたさらなるセットにエントロピー符号化演算130-2を適用して、さらなるレベルの強化情報を含む符号化されたレベル2ストリームを生成する)。しかしながら、量子化ステップ120-1のみが実行されてもよいし、変換および量子化ステップのみが実行されてもよい。エントロピー符号化は、任意選択で、追加して使用され得る。好ましくは、エントロピー符号化演算は、ハフマン符号化演算、またはランレングス符号化(RLE)演算、またはこれらの両方であり得る。
【0045】
したがって、
図1および
図3に示され、かつ上述したように、符号化プロセスの出力は、ベースレベルのベースストリームと、好ましくは、第1のレベルの強化およびさらなるレベルの強化を含む強化レベルの1つ以上の強化ストリームと、である。
【0046】
図1~
図3は、本発明の特定の態様が適用され得る例示的な符号化および復号化スキームを示す。本発明の一態様は、所望の品質レベル(例えば、出力される復号化されたビデオの所望の品質レベル)を維持しながら、ハイブリッドストリームのデータレートを適応させる能力である。ハイブリッド符号化方法論の態様は、方法論が、データストリームの並列符号化および復号化を可能にすることである。方法論は、ブロック間情報に依拠しないので、フレーム内またはフレーム間にかかわらず、各フレーム、および実際には、フレームの個々の部分は、別個に処理され得る。レート制御の目的で、この柔軟性は、各強化層の異なる符号化コンポーネントが独立して制御され得るので、各強化ストリームに対して異なるメトリックを設定することを可能にする。したがって、このことは、改善された簡易なレート制御方法論を提供する。
【0047】
エンコーダ100によって出力される3つのストリームのセットなどのハイブリッドストリームでは、例えば、帯域幅制限に基づく、ハイブリッドストリーム全体のための所望の品質レベルが、3つのストリームのうちの1つ以上に対してレート制御を適用することによって実装され得る。レート制御は、総ビットレートバジェット内の個々のストリームの所望の品質またはビットレートを決定することによって適用され得る。各強化ストリームは、レンダリングされたときのビデオデータの解像度を表すので、品質メトリックを介してレート制御を制御することは、ハイブリッドストリームが、既知の品質でデータを符号化および配信することができることを保証する。
【0048】
図4は、第1の例示的なレートコントローラ400の概略図を示す。この例のレートコントローラ400は、強化レートコントローラ402を備える。強化レートコントローラ402は、各ストリームに対して量子化パラメータQ
iを設定することによって、
図1~
図3に示される強化ストリーム(例えば、レベル1およびレベル2ストリーム)の各々のビットレートを制御するように構成されている。
図4では、強化レートコントローラ402は、第1の(レベル1)強化ストリームに対する第1の量子化パラメータQ
1と、第2の(レベル2)強化ストリームに対する第2の量子化パラメータQ
2と、の2つの量子化パラメータを出力する。いくつかの実装形態では、強化ストリームのレベルは、最高解像度ストリームがレベル0であり、かつより低い解像度ストリームがレベル1であるように、逆にラベル付けされ得ることに留意されたい。
【0049】
図4の実施例は、第1のレート制御モードに従って実装されたレートコントローラ400を示す。このレート制御モードでは、外部の所望の品質レベルは、提供されない。したがって、第1および第2の量子化パラメータQ
1およびQ
2は、符号化スキームのための内部制御論理および/または内部測定値に基づいて設定され得る。レートコントローラ400はまた、任意選択で、ベース層(図示せず)のビットレートを決定してもよいし、ベース層のビットレートが、構成パラメータを介して設定されてもよい。
図4には、2つの強化ストリームのみが示されているが、本明細書に記載されるプロセスは、複数の強化ストリームに拡張されてもよい(例えば、解像度の層を増加させるように)。本明細書に記載される例では、ビットレートは、ビットごとのピクチャ要素またはbppレートに従って設定されてもよく、この場合に、ピクチャ要素は、残差要素(例えば、残差信号の「ピクセル」)を含み得る。
【0050】
図4に示される例では、以下で詳細に記載されるように、強化レートコントローラ402は、各強化レベルに対して、量子化パラメータQ
1およびQ
2によって表される量子化のレベルを決定する。レートコントローラ400は、
図1および
図3のいずれかのエンコーダ100などのエンコーダの一部を形成する。量子化パラメータはまた、
図2のデコーダ200などのデコーダにも伝達され得る。量子化パラメータは、ハイブリッドストリーム(または強化ストリームのうちの1つ)のヘッダ情報の一部を形成し得る。量子化パラメータQ
1およびQ
2は、例えば、量子化ブロック120-1および120-2によって適用されるように、所与のフレームについて量子化パラメータがフレーム内の各コーディング単位を量子化するために使用されるように、フレームごとに決定され得る。本明細書におけるフレームへの言及は、フレームの特定の成分、例えば、成分のセットが同様の様態で符号化される(および並行して符号化され得る)YUVまたはRGB成分の1つを指し得る。場合によっては、異なる成分についての異なる量子化パラメータQ
1およびQ
2、および/または所与のフレームについての成分の各セットに対する共通の量子化パラメータQ
1およびQ
2が存在し得る(例えば、量子化パラメータは、フレームに対して設定され、各成分に対して同様に適用される)。
【0051】
図4に示されるように、場合によっては、レートコントローラ400は、任意選択の符号化フィードバック604を受信し得る。符号化フィードバック604は、量子化パラメータQ
1およびQ
2を設定するために、強化レートコントローラ402によって使用可能である符号化プロセスに関する情報を含み得る。符号化フィードバック604は、前に符号化されたフレームに適用されたような符号化処理からのフィードバックを含み得る。符号化フィードバック604は、強化レートコントローラ602が、各強化層に対する量子化のレベルを決定することを可能にし得る。
【0052】
以下に詳細に記載されるように、量子化ブロック120-1および120-2によって量子化パラメータQ1およびQ2を使用して、量子化プロセスで使用するためのビンサイズ(またはビンサイズのセット)を決定し得、より小さいビンサイズは、符号化するためにより多くのデータを必要とするより詳細な量子化のレベルを表す(すなわち、ビンが多いほど、エントロピー符号化する値が多く、かつ、ランレングス符号化が適用される場合にゼロのランの可能性が低いことを意味する)。ビンサイズ(したがって、量子化のレベル)を調整することによって、符号化されているフレームの品質、およびさらにはデータレートを制御することが可能である。したがって、強化ストリームの各々に対して量子化パラメータを変動させることによって、データの各フレームを符号化するために必要とされるデータの量を変動させてもよい。ある場合には、強化レートコントローラ402は、フレームの複雑さに応じて量子化パラメータQ1およびQ2を設定するように構成され、したがって、低複雑性シーンのデータレートを低減し、および/または帯域幅の利用可能性の変化に基づく調整を可能にしてもよい。
【0053】
第1のレート制御モードによれば、
図4の実施例によって示されるように、第1の事例における所望の品質レベルは、所定の内部値であり得る。第1のレート制御モードは、送信のための利用可能な静的ビットレートがある場合に適用され得る。この場合、量子化パラメータQ
1およびQ
2を、符号化されたハイブリッドストリームの送信および/または生成中に調整して、静的ビットレートを維持し得る。2つの強化ストリームの独立性は、ビットレートを制御するための良好な柔軟性を提供し、例えば、場合によっては、第1の強化レベルに対するより細かい量子化のレベルは、第2の強化レベルでのより粗い量子化のレベルを可能にし得、したがって、ビットレートのトレードオフを可能にする(例えば、第2の強化レベルは、典型的には、より高い解像度であり、したがって、より多くのビットを必要とするため)。以下に記載されるさらなる実施例では、第2のレート制御モードが提示され、データレートをよりよく管理するために、所望の品質レベルが設定され得る(例えば、ユーザ、クラウドコントローラ、または構成パラメータによって)。
【0054】
以下で詳細に説明されるように、場合によっては、各フレームを符号化するために必要とされるデータの量は、変動し得、各強化層で変動し得る。このことは、入力ビデオストリームの予測不可能な性質、および/または他のブロックから独立して(例えば、フレームごとのレベルでも)データのブロックを符号化する能力に起因し得る。データの各フレームを符号化するために必要とされるデータの変動を考慮するために、符号化および/または復号化プロセスで使用されるバッファが、フレームの大部分に対して、満杯にならないか、または容量を超えないように、所望の品質のレベルまたは品質係数を設定することが好ましい。このことにより、より多くのデータを符号化する必要がある、より複雑なフレームが、バッファに記憶され得ることが保証される。所望の品質のレベルはまた、可変帯域幅が利用可能である状況、例えば、送信が、利用可能な帯域幅の可変割合を占めることを可能にし得る状況で、有用であり得、過剰な帯域幅を使用することを回避するように所与の品質のレベルにすることが所望され得る。
【0055】
図5は、上述したような第2のレート制御モードを実装するレートコントローラ500のさらなる実施例を示す。場合によっては、
図5のレートコントローラ500は、レートコントローラ400と同じであるが、例えば、追加の構成要素が使用および/またはインスタンス化される場合、動作パラメータの変更を表し得る。他の場合には、
図5のレートコントローラ500は、第1のレート制御モードとは対照的に、第2のレート制御モードを実装するようにハードコード化または構成され得る。
【0056】
図5のレートコントローラ500は、
図4のレートコントローラ400と特定の特徴を共有する。強化レートコントローラ502は、やはり、上述したような、2つの強化符号化層における量子化を制御し得る量子化パラメータQ
1およびQ
2のセットを出力するように構成されている。レートコントローラ500は、ハイブリッドビデオストリームに対する所望の品質レベル510の表示を受信するように構成されている点で、
図4のレートコントローラ400とは異なる。次いで、レートコントローラ500は、この所望の品質レベル510を提供するために、強化および/またはベースレベル符号化コンポーネントの動作パラメータを調整するように構成されている。
図5では、所望の品質レベル510の表示は、レートコントローラ500の一部を形成する品質コントローラ512によって受信される。
図5の品質コントローラ512は、所望の品質レベル510の表示に従って強化レートコントローラ502を制御するように構成されており、例えば、品質コントローラ502は、ベースレベルおよび強化レベル(レベル1およびレベル2ストリームの符号化を含む)の動作を調整して、所望の品質レベル510の表示を満たすか、またはこの表示を目標とし得る。
図5では、品質コントローラ512は、ハイブリッドストリームのベースレベルまたは層を符号化するために使用される(例えば、
図1の120などのベースコーデックを制御する)ベースパラメータ514を出力する。
【0057】
したがって、
図5には、レート制御プロセスのさらなる実施例が示されており、そのうちの1つで、ハイブリッドストリームのベース層および強化層は、レートコントローラ500を介して外部に供給される、品質の表示を達成することを目標とするように符号化される。
【0058】
図5に示されるように、レートコントローラ500は、符号化に対する所望の品質レベル510の表示を受信する。所望の品質レベル510の表示は、所定の値(例えば、構成ファイルまたは他のデータストレージからロードされるような)であり得るか、またはこの表示は、ユーザによって入力され得る。所望の品質レベル510の表示は、出力される復号化されたビデオの所定の範囲の品質値にマッピングする、所定の範囲の値内の値を含み得る(例えば、デコーダによって出力される再構成されたレベル2信号)。所望の品質レベル510の表示は、固定レート係数の形態であってもよいが、異なる符号化アプローチを包含するハイブリッドスキームとは対照的に、例えば、ベースレベルで実装され得るものなどの、単一の符号化スキームのために、比較上の固定レート係数が、典型的に設計される。当技術分野では、そのようなハイブリッドスキームを、固定レート係数と同様のパラメータを使用するように適合させる課題がある。例えば、ベースレベルおよび強化レベルにおける異なる符号化アプローチの使用は、共通の共有品質係数で両方のレベルを制御することが不可能であること、さらに、両方のレベル、および強化ストリームのサブ層が、入力画像コンテンツに依存する可変ビットレートを有し得ることを意味する。
【0059】
ある場合には、所望の品質レベル510の表示は、定義された品質範囲を表す8ビット整数値を含み得る。所望の品質レベル510の表示は、範囲が、知られているビデオコーデックに使用される範囲と同様であるように定義され得、例えば、AVCおよびHEVCに対しては、0~51の範囲が使用され、低い値ほど高い品質を示し、高い値ほど低い品質を表す。この場合、レートコントローラ500、特に品質コントローラ512は、所望の品質レベル510の表示を、強化レートコントローラ502に対する制御命令に、およびベースコーデックに対するベースパラメータ514に変換するように構成されている。例えば、品質コントローラ512は、ベースパラメータ514を設定することによって、および強化レートコントローラ502を制御することによって、ベースおよび2つの強化ストリームのビットレートを制御する。したがって、所望の品質レベル510の表示は、品質コントローラ512によって、強化レートコントローラ502を制御して、強化層に対する量子化パラメータQ1およびQ2を決定するために使用される、初期品質係数を設定する。したがって、レートコントローラ500は、所望の品質レベル510の表示を満たすか、または目標とするように、ハイブリッドストリームのビットレートを設定する。
【0060】
所望の品質レベル510の表示は、1つ以上の異なる初期パラメータを使用して表現され得る。所望の品質レベル510の表示は、ベース層および/または強化層に対して利用可能な同様の表示とは独立し得る。品質コントローラ512は、ベース層を制御するために、所望の品質レベル510の表示をいくつかのベースパラメータ514にマッピングし得る。ベースパラメータ514は、ベースモード(固定ビットレート、可変ビットレート、または固定品質係数モードなど)、ベースビットレート、ベースバッファサイズ、および最大ベースビットレートのうちの1つ以上を含み得る。
【0061】
所望の品質レベル510の表示は、単一のパラメータ、例えば、整数値、を含み得、および/または異なる所望の設定の配列を含み得る。ある場合には、所望の品質レベル510の表示は、符号化される入力ビデオの追加の制約および/または特性とともに提供され得る。例えば、所望の品質レベル510の表示は、ビデオの入力解像度、利用可能なビットレート、および空間スケーリングパラメータのセット(例えば、両方の画像方向で、または水平方向のみで、アップ/ダウンサンプリングを使用するかどうかなど)などのパラメータを含み得るか、これらのパラメータの関数であり得るか、またはこれらのパラメータに付随し得る。実施形態では、所望の品質入力510は、ビデオストリームを符号化するために使用される符号化標準に依存する。場合によっては、所望の品質レベル510の表示は、ベースパラメータ514のデフォルト値を設定するために、または上書きするためのいずれかに使用するパラメータを含み得るか、これらのパラメータの関数であり得るか、またはこれらのパラメータに付随し得る。例えば、ベースモードの動作が品質コントローラ512に渡される場合、このことを使用して、ベースパラメータ514にベースモードを明示的に設定し得る。好ましい場合では、所望の品質レベル510の表示は、供給されたビデオ信号またはファイルの符号化に対して静的であり、例えば、ビデオを符号化するために使用される。ただし、品質コントローラ512によって、量子化パラメータQ1およびQ2を含む、基礎となる制御パラメータのうちの1つ以上は、フレームごとに変動して、所望の品質レベル510を満たそうとし得る(およびその可能性が高い)。
【0062】
図1~
図3を参照して記載したように、ベースパラメータ514に基づいて、エンコーダは、ベースコーデック102を制御する。上記で議論したように、ベースコーデック102は、ベース符号化および復号化が、入力ビデオの解像度よりも低い解像度で、ベースパラメータ514を使用して実行されるように、ダウンサンプリングされた入力ビデオを受信する。同様に、レベル1強化ストリームは、典型的には、ベース層と同じ解像度で符号化され、レベル2強化ストリームは、典型的には、入力信号の同じ、より高い解像度で符号化される。品質コントローラ512は、複数の解像度が存在する所望の品質レベル510の表示を満たすか、または目標とするように、ベースエンコーダおよび強化エンコーダのビットレートを制御するように配設されている。このことは、やはり、ビットレートを制御することが簡単でない演算であることを意味する。
【0063】
場合によっては、量子化パラメータQ
1およびQ
2は、ベースパラメータ514とは異なる。例えば、ベースパラメータ514は、ベースコーデックの利用可能な外部インターフェース(例えば、ハードウェアおよび/またはアプリケーションプログラミングインターフェース)を使用して、「ブラックボックス」またはモジュール方式で
図1のベースコーデック120を制御し得る。しかしながら、レートコントローラ500は、強化符号化ブロックの内部制御へのより特権的なアクセスを有し得るため、より低いまたはより正確な制御のレベルで量子化パラメータQ
1およびQ
2を設定することができる。ベースコーデック自体は、ベースコーデックの符号化構造内で内部的に量子化パラメータを使用し得るが、これらのパラメータは、典型的には、外部的に構成可能ではない(例えば、ベースコーデックのインターフェースを介したアクセスがないか、もしくは低減され得、および/または符号化中に量子化パラメータの変更を可能にするためにベースコーデックに情報を渡すことが不可能であり得る)。好ましくは、符号化されたベースストリーム、またはベース層は、強化ストリームから独立して符号化される。
【0064】
任意選択で、以下に詳細に記載されるように、強化レート制御502はまた、符号化フィードバック504を示すさらなる入力を受信する。これは、強化レベル符号化演算(例えば、
図1のブロック100-1および100-2)および/またはこれらの演算のサブコンポーネントからのフィードバックを含み得る。これは、ビデオ信号の1つ以上の前のフレームまたはブロックを符号化することからのフィードバックを含み得る。これはまた、ベース層からのフィードバック(例えば、標準の報告インターフェースを使用するベースコーデック)を含み得る。
【0065】
図5のレートコントローラ500を使用して、量子化のレベルは、一定であってもよいし、所望の品質510の表示を満たすか、または満たそうとするように変動してもよい。例えば、量子化パラメータQ
1およびQ
2は、所望の品質510の表示に基づいて設定された、1つ以上のビットレートもしくはビットレート範囲、または制約を満たすように制御され得る。ある場合には、ベースパラメータ514は、符号化のための静的パラメータとして設定され、量子化パラメータQ
1およびQ
2は、所望の品質510の表示を満たすか、または満たそうとするために、選択された静的ベースパラメータ514のコンテキスト内で可変である。
【0066】
量子化のレベルが変動する実施例では、強化レートコントローラ502は、各強化ストリームに対する量子化パラメータQ1およびQ2の境界を設定し得る。例えば、上限および下限が、(ユーザによって知覚される品質のレベルである)品質の主観的なレベルが不変であるか、または目立たないままであるように、所望の品質510の表示に基づいて設定され得る。これにより、レートコントローラ500が、複雑なシーンの間であっても、知覚可能な品質の損失なしに、ビデオストリームを柔軟な様態で符号化することが可能になる。出力バッファに記憶されたデータの量が変動する際、任意選択の符号化フィードバックモジュール504は、バッファの容量に関連するさらなる情報を、強化レートコントローラ502に提供し得る。この情報を使用して、各強化ストリームに対する量子化パラメータQ1およびQ2を調整し得る。
【0067】
図6は、強化レートコントローラ602の実施例を示す。この実施例は、場合によっては強化レートコントローラ402および502のうちの1つ以上を提供するために実装され得る、特定の内部構成要素を示す。
【0068】
図6では、強化レートコントローラ602は、やはり、ビデオ信号の所与のフレーム(またはコーディング単位)を符号化するための量子化パラメータQ
1およびQ
2を出力するように構成されている。
図6の実施例では、強化レートコントローラ602は、複数の入力パラメータに基づいて量子化パラメータQ
1およびQ
2を決定することによって、各強化ストリームのビットレートを調整する。特に、強化レートコントローラ602は、符号化されるビデオの複数のフレームのセット内の各フレームに対する量子化パラメータQ
1およびQ
2を決定するように構成されている。前のフレームの符号化からのフィードバックを使用して、現在のフレームに対する量子化パラメータQ
1およびQ
2を設定し得る。
【0069】
例えば、第1のフレームf0が、符号化され得、量子化パラメータQ1およびQ2は、この第1のフレームに対して決定され得る。次いで、ビデオデータの後続フレームf1が、符号化されることになる。この場合、強化レートコントローラ602は、好ましくは、先行フレームf0からの符号化データを使用して、後続フレームに対する量子化パラメータQ1およびQ2を決定するように構成されている。例えば、先行フレーム(または1つ以上の他の前のフレーム)の設定を使用して、後続フレームに対する量子化パラメータQ1およびQ2の初期値を決定し得、ここで、強化レートコントローラ602は、この出発点から量子化パラメータQ1およびQ2の新しい値を探索するように構成されている。したがって、前のフレームからの符号化パラメータは、後続フレームに対する量子化パラメータQ1およびQ2の設定に使用するためのフィードバックの形態を提供する。ハイブリッドビデオストリームは、フレームが互いに独立して符号化され得るように構成されているので、以下は、理解しやすいように、先行フレームおよび後続フレームを参照して記載されるが、先行フレームは、必ずしも後続フレームの直前のフレームである必要はない。
【0070】
図6では、強化レートコントローラ602は、所望の品質レベル610の表示を受信する。これは、
図5のレートコントローラ500に入力される所望の品質レベル510の同じ表示を含み得る。他の場合には、品質コントローラ512は、所望の品質レベル510の表示を、
図6の強化レートコントローラ602に渡す前に、調整し得る。所望の品質レベル610の表示は、パラメータ計算器620に入力される。パラメータ計算器620は、所望の品質レベル610(および任意選択で1つ以上の追加のパラメータ)の表示を処理し、かつ各強化ストリームに対する量子化パラメータQ’
1およびQ’
2ならびに所望のビットレートBR
Dを出力するように構成されている。所望のビットレートBR
Dは、出力された量子化パラメータQ
1およびQ
2を使用して、所望の品質レベル610の入力された表示を満たそうとする場合の、ハイブリッドビデオストリーム(および/または強化ストリームのうちの1つ以上)の推定ビットレートを含み得る。強化レートコントローラ602は、慣性パラメータ計算器632に入力される慣性品質レベル表示630をさらに受信する。慣性パラメータ計算器632は、パラメータ計算器620の機能を複製するが、異なる入力を受信する(したがって、異なる出力を生成する)。例えば、パラメータ計算器620および慣性パラメータ計算器632は、共通プログラムコードクラスの異なるインスタンス化および/または共通ハードウェアチップの複製を含み得る。慣性パラメータ計算器632は、各強化ストリームに対する量子化パラメータQ”
1およびQ”
2ならびに慣性ビットレートBR
Iを出力する。慣性ビットレートBR
Iは、出力された量子化パラメータQ”
1およびQ”
2を使用して、所望の品質レベル630の入力された慣性表示を満たそうとする場合の、ハイブリッドビデオストリーム(および/または強化ストリームのうちの1つ以上)の推定ビットレートを含み得る。最後に、強化レートコントローラ602はまた、符号化パラメータ入力640を受信する。これは、
図4および
図5の符号化フィードバック404および504と同様の入力を含み得る。符号化パラメータ入力640は、フレームタイプ、ベース層のビットレート、最小の所望のビットレート(例えば、品質コントローラ512によって決定されるような)、および前の符号化に基づくターゲットビットレートのうちの1つ以上などの、1つ以上の動作パラメータを含み得る。符号化パラメータ入力640は、ビットレート範囲計算器642に提供される。ビットレート範囲計算器642は、符号化パラメータ入力640を受信し、ハイブリッドビデオストリーム(または個々の強化ストリームのうちの1つ以上)の最大および最小のビットレートなどのビットレート範囲を決定する。
【0071】
パラメータ計算器620、慣性パラメータ計算器632、およびビットレート範囲計算器642の出力は、品質調整器650に入力される。品質調整器650は、入力を処理し、かつ符号化される現在のフレームに対する量子化パラメータQ1およびQ2の最終セットを決定するように構成されている。ある場合には、品質調整器650は、パラメータ計算器620および慣性パラメータ計算器632からの受信された所望のビットレートBRDおよび慣性ビットレートBRIのうちの1つ以上が、ビットレート範囲計算器642によって出力されたビットレート範囲内にあるかどうかを判定する。入力ビットレートのうちの1つがビット範囲内にある場合、量子化パラメータQ’1およびQ’2、ならびに量子化パラメータQ”1およびQ”2のうちの対応する量子化パラメータが選択され、強化レートコントローラ602によって出力される量子化パラメータQ1およびQ2として使用される。入力ビットレートのいずれもビットレート範囲内にない場合には、品質調整器650はまた、所望の品質レベルの更新された慣性表示を、慣性品質計算器632に出力する。所望の品質レベルの更新された慣性表示は、所望の品質レベル630の慣性表示の更新されたバージョンである。品質調整器650は、パラメータ計算器620の出力を基準として使用して、ビットレートの増加または低減と関連付けられた方向における所望の品質レベル630の慣性表示を、ビットレート範囲内に入るように調整する。次いで、慣性パラメータ計算器632は、品質調整器650から受信された所望の品質レベルの更新された慣性表示に基づいて、修正された量子化パラメータQ”1およびQ”2ならびに修正された慣性ビットレートBRIを出力するように反復的に作動される。このフィードバックループは、修正された慣性ビットレートBRIがビットレート範囲計算器642からのビットレート範囲内に入るまで反復され得る。品質調整器650はまた、パラメータ計算器620および慣性パラメータ計算器632のうちの1つ以上によって出力されたビットレートが、ビットレート範囲内に入ることが見出され、かつ量子化パラメータQ1およびQ2の最終セットが出力されると、次のフレーム(例えば、フレームn+1)に使用される所望の品質レベル652の慣性表示を出力するように、構成されている。所望の品質レベル出力652は、次のフレームに対する所望の品質レベル630の慣性表示として使用され得る(一方で、所望の品質レベル610の表示は、品質コントローラ512の動作に応じて、次のフレームに対して一定であり得る)。
【0072】
上述したように、強化レートコントローラ602は、複数の入力パラメータを取得して、各強化ストリームに対する量子化パラメータQ1およびQ2の最終セット、ならびに所望の品質レベル652での次のフレームに対する慣性フレーム品質表示を出力する。
【0073】
ビデオデータの第1のフレームについて、または所望の品質レベル630の慣性表示が利用可能でない場合、所望の品質レベル630の慣性表示は、所望の品質レベル610の初期表示として設定され得る。
図4に従って、これは、初期ユーザセット、またはそれ以外の所定の値であり得る。所望の品質レベル610の表示、所望の品質レベル630の慣性表示、または所望の品質レベル652の慣性表示は、共通のフォーマットを有し得、任意の適切な客観的品質メトリックであり得る。ある場合には、それらは、出力された復号化されたビデオの知覚品質を表す品質値の予め定義された範囲内の8ビット整数値であり得る。
【0074】
パラメータ計算器620および慣性パラメータ計算器632は、両方とも、品質の表示に基づいて、各強化のレベルに必要とされる量子化のレベルを決定する。さらに、必要とされる量子化のレベルに基づいて、所望の品質または所望の品質に近いデータのフレームを符号化するために必要とされるビットレートも、計算される。本明細書に記載されるハイブリッド符号化スキームを使用してフレームを符号化するために必要とされるデータの総量は、ビデオ信号におけるシーンの複雑さに依存し得るため、フレームごとに変化し得る。したがって、所望の品質レベル610の一定の表示を有する異なるフレームに対して、異なる量子化パラメータが決定され得る。このように、強化レートコントローラ602は、フレームごとに、および所与のフレームに対して、構成要素の出力が変化する動的システムである。
【0075】
符号化パラメータ入力640は、符号化プロセスで使用されるいくつかのパラメータを定義する。これらは、ターゲットレート係数(または品質レベル)およびターゲットビットレートを含み得る。符号化パラメータ入力640はまた、そのようなパラメータの最大値および最小値の形態で、範囲を含んでもよい。ビットレート範囲計算器642は、符号化パラメータ入力640によって提供されるような異なるビットレート範囲表示を比較して、全体的なビットレート範囲を決定し得る。
【0076】
以下に詳細に記載される特定の実施例では、エンコーダ100は、リーキーバケットモデルに従って実装されるバッファを利用して、データのフレームに対する量子化のレベルを決定する。フレームを符号化するために必要とされるデータの量は、フレームの複雑さに応じて変動し得るので、バッファの内容は、バッファがオーバーフローしないように(例えば、より多くのデータが、利用可能な帯域幅またはビットレートによってサポートされ得るように符号化されるように)制御される必要がある。この場合、符号化パラメータ入力640は、バッファ容量およびバッファを満たすための最小ビットレートなどのバッファと関連付けられた測定値を含み得る。したがって、バッファと関連付けられた測定値(すなわち、リーキーバケットパラメータ)を、ビットレート範囲計算器642によって使用して、1つ以上の強化ストリームのビットレート範囲を決定し得る。
【0077】
図4および
図5のレートコントローラ400および500、ならびに
図6の強化レートコントローラ600を使用して、ビデオのフレームを、複数のレベルの量子化で符号化し、好ましくは、ベースストリームおよび2つの強化ストリームの各々を、異なる量子化のレベルで符号化し得る。これらの実施例内の符号化は、フレームごとの処理を使用して、複数のフレームに対して繰り返される。したがって、上述したように、各フレームについて、符号化プロセスは、2つの強化ストリームのそれぞれの各解像度でビデオのフレームを再構成することと、その後、再構成を、入力ビデオのフレームから導出されたビデオデータと比較することとを含み、当該ビデオデータは、強化ストリームのそれぞれの解像度に対応する。したがって、そのような比較は、元のフレームと再構成されたフレームとの間の差異を作製することを可能にする。例えば、
図1および
図3に示されるように、各フレームについて、ビデオのフレームに対する残差のセットは、比較に基づいて2つの強化レベルの各々で生成され、これらの残差は、
図4および
図5のレートコントローラ400および500によって出力された2つの強化ストリームに対する量子化パラメータを使用して符号化される(例えば、強化レートコントローラ600の演算を介して)。プロセスは、完全なビデオ(例えば、送信のためのビデオファイルまたはビデオストリーム)を符号化するために、複数のデータのフレームにわたって繰り返され得る。フレームは、所望の品質レベル510または610の入力表示を満たすか、または満たそうとするように、ハイブリッドストリーム内で符号化される。このことは、非技術的なユーザが、所望の品質のレベルを得るために、複数の異なる符号化アプローチに対する複雑な技術的な量子化パラメータを設定することができる簡易な方法を提供する。
【0078】
図7Aおよび
図7Bは、例示的なエンコーダ700の概略図を示す。これは、
図1および
図3に示されるエンコーダ100を含み得る。
図7Aおよび
図7Bは、
図1または
図3に示されるように、前の実施例のレートコントローラ(例えば、
図4または
図5のレートコントローラ400または500)がエンコーダ100のコンテキスト内でどのように実装され得るかを示す。
図7Aは、第1の強化エンコーダ700-1内の量子化ブロック720-1を制御するように配設されたレートコントローラ710を示す。
図7Bは、第1の強化エンコーダ700-1および第2の強化エンコーダ700-2内の量子化ブロック720-1および720-2を制御するように配設された同じレートコントローラ710を示す。レートコントローラ710は、ソフトウェアルーチン(例えば、CまたはC++のような高速低水準言語での)および/または専用電子回路を備え得る。両方の図は、強化レベルのコーディングとは異なる、ベースビデオコーディングアプローチに従って符号化および復号化演算を実行するように構成されたベースコーデック730を示す。ベースコーデック730は、符号化されたベースストリーム(BS)を出力し、第1の強化エンコーダ700-1は、第1の符号化された強化ストリーム(LS1)を出力し、第2の強化エンコーダ700-2は、第2の符号化強化ストリーム(L2S)を出力する。
図7Aおよび
図7Bの例示的なエンコーダ700はまた、符号化されたストリームのうちの1つ以上を受信するためのバッファ740を備える。バッファ740は、符号化されたベースストリーム、および2つの符号化された強化ストリームのうちの少なくとも1つを記憶および/または組み合わせるために使用される。バッファ740は、ソフトウェア定義バッファ(例えば、メモリリソースの予約されたセクション)および/または専用ハードウェアバッファを備え得る。バッファ740は、複数の符号化されたストリームを組み合わせて、ハイブリッドビデオストリーム(HVS)を出力するように構成されている。
【0079】
図7Aおよび
図7Bの実施例では、レートコントローラ710は、ベース処理層(例えば、少なくともベースコーデック730のベースエンコーダ)およびバッファ740からデータを受信する。このデータは、
図6に示されるエンコーダパラメータ入力640、または
図4および
図5の符号化フィードバック404および504を含み得る。
【0080】
図7Aは、符号化されたベースストリームおよび第1の符号化された強化ストリームに関するバッファ740の使用を示し、
図7Bは、バッファが、符号化されたベースストリームおよび両方の符号化された強化ストリームを受信する別の実施例を示す。一方、
図6~
図8に関して示されるレート制御プロセスは、2つの強化ストリームで示される。強化ストリームの数は、2よりも大きくてもよいし、2よりも小さくてもよい。
【0081】
図7Aの実施例では、レートコントローラ710は、量子化パラメータQ
1のセットを供給することによって、第1の強化エンコーダ700-1内の量子化を制御する。
図7Bの実施例では、レートコントローラ710は、それぞれの「量子化」コンポーネントに量子化パラメータを供給することによって、すなわち、量子化ブロック720-1および720-2に量子化パラメータQ
1およびQ
2を供給することによって、両方の強化符号化層内の量子化を制御する(これは、
図1および
図3のうちの1つ以上からの量子化ブロック120-1および120-2の実装形態であり得る)。さらに別の場合(図示せず)、バッファ740は、符号化されたベースストリームおよび第2の符号化された強化ストリームを受信するように構成され得る。
【0082】
図7Aおよび
図7Bの実施例では、バッファ740は、可変ビットレートで入力(例えば、可変ビットレートの符号化されたストリーム)を受信するように構成され得る一方、出力(すなわち、ハイブリッドビデオストリーム)は一定のビットレートで読み取られる。他の場合には、出力は、可変ビットレートで出力され得るが、
図6を参照して記載されるように、所望の品質のレベルの表示によって制限され得る。レートコントローラ710は、バッファ740からステータスを読み取って、バッファ740がオーバーフローしたり、空になったりしないことを保証し、バッファに渡されるデータを制御して、バッファ740の出力での読み取りに利用可能であるデータが常にあることを保証し得る。例えば、
図6のエンコーダパラメータ入力640は、バッファ740を満たすのに必要とされる最小ビットレート、およびバッファ740の最大ビットレートまたは容量を含み得る。これらは、
図6を参照して記載されるように、ビットレート範囲を制御するために使用され得る。
【0083】
図8は、
図1および
図3のエンコーダ100内の1つ以上のデータストリームのビットレートを制御するために使用され得るレートコントローラ800の第3の実施例を示す。これは、前述のエンコーダのいずれか1つの変形形態と見なされ得る。
図9は、レートコントローラ800の第3の実施例のより高度な変形形態である、レートコントローラ900の第4の実施例を示す。
図8および
図9は、リーキーバケットモデルと適合性があるレートコントローラの2つの可能な実装形態を示す。特に、
図8および
図9は、
図4および
図5の任意選択の符号化フィードバック404または504が実装され得る1つの様態を示す。これは、
図6の慣性パラメータの使用の変形形態と見なされ得る。
【0084】
図8および
図9のレートコントローラ800および900は、両方とも、バッファ(
図7Aおよび
図7Bのバッファ740など)のステータス840、940を受信して、現在のフレームtに対する量子化パラメータQ
tのセットを生成する。量子化パラメータは、
図3に示されるように、レベル1およびレベル2の符号化パイプラインのうちの1つ以上における「量子化」コンポーネントに供給され得る。
図8および
図9の実施例は、単一の強化レベルを参照して記載されているが、これらの実施例は、複数の強化レベルに量子化パラメータを提供するために、
図4~
図6の実施例に従って適合され(または、複数の強化レベルの各々に対して繰り返し実装され)得る。
【0085】
両方の実施例では、レートコントローラ800、900の一般的な動作は、以下のとおりであり得る。量子化パラメータQ
tのセットは、バッファからのフィードバックに基づいて調整される。このフィードバックは、バッファ内のデータの量(例えば、容量など)を示し得る。
図8および
図9の両方では、バッファ内のデータの量(すなわち、バッファがどれだけ「満たされ」ているか」)の表示が、「バッファから」の信号840、940を介して受信される。次いで、これを、Q推定コンポーネント820、920によって直接的または間接的のいずれかで使用して、「量子化」動作パラメータとして使用される量子化パラメータQ
tのセットを推定する。
【0086】
例えば、
図8のQ推定コンポーネント820は、バッファからの信号840を受信し、かつバッファが容量に近づいている(すなわち、「満杯」になりつつある)かどうかを判定するように構成され得る。このことは、直接的に(例えば、残りの容量の表示を使用して)、および/または間接的に(例えば、bpp容量などのビットレートを使用して)実行され得る。バッファが容量に近づいている場合、Q推定コンポーネント820は、量子化パラメータQ
tを調整して、必要とされるデータの量を低減するように構成されている。
図6の符号化パラメータ入力640の使用と同様の様態で、バッファからの信号840は、(例えば、バッファのサイズに関連する)最大および最小の範囲を含み(または決定するために使用され)得、ひいては、量子化パラメータを調整して、フレームがその範囲内に入るようにフレームを符号化するために必要とされるビット数を調整し得る。
【0087】
ある場合には、量子化パラメータ値Qtのセットは、バッファ内のデータの量に比例し得る。例えば、新しいフレームを受信した瞬間に、バッファ内に大量のデータがある(すなわち、バッファが容量に近づいている)場合には、Q推定コンポーネント820は、符号化される残差データの量を低減するために、高い値のQt(例えば、大きなステップまたはビンサイズなど)を設定し得る。
【0088】
特定の実施例では、量子化パラメータQtを使用して、量子化ステップ幅を設定し得、量子化ステップ幅は、量子化パラメータQtの値に反比例する。この場合、低い値のQtは、所与の範囲の残差値に対してより少ない量子化ビンまたはグループをもたらすより大きな量子化ステップ幅の値に対応し得、したがって、量子化パラメータ値Qtのセットは、バッファ内のデータの量に反比例し得る。この場合、レートコントローラは、バッファが比較的空である場合には、高い値のQt(すなわち、低いステップ幅の値)を設定して、より多くの残差データをハイブリッドビデオストリームに符号化するように、構成されている。1つ以上の量子化パラメータから量子化ステップ幅がどのように決定されるかに応じて、異なるアプローチが適用され得る。
【0089】
概して、
図8の実施例では、レートコントローラ800は、バッファ内のデータの量を使用して1つ以上の強化層に対する量子化のレベルを決定する適応的なレート制御プロセスを可能にする。
【0090】
図9の実施例は、追加の構成要素を使用して、量子化パラメータのセットを決定する。
図9の実施例では、レートコントローラ900はまた、ベースエンコーダからエンコーダパラメータを受信する。これらは、レートコントローラ900に入力される「ベースから」の信号942として示されている。ベースからの信号942は、
図6におけるエンコーダパラメータ入力640の一部を形成し得る。ある場合には、ベースからの信号942は、(例えば、ベースコーデック120の一部として)ベースエンコーダによって使用されているビットレートを示し得る。ベースエンコーダが可変ビットレート符号化フォーマットを使用するように構成されている場合には、ベースエンコーダによって使用されるビットレートは、フレームにわたって変動し得る。したがって、ベースエンコーダの現在のビットレートを使用して、強化ストリームの量子化パラメータを決定し得る。
【0091】
ある場合には、ベースからの信号942はまた、ベースエンコーダがベースエンコーダのフローに追加することを意図する「フィラー」データの量を示し得る。この場合、エンコーダは、利用可能な帯域幅を最大化するために、ベースエンコーダ「フィラー」データを、特別な強化ストリームデータで置き換え得る。この場合、高レベルのフィラーがある場合、レートコントローラ900は、より多くの残差データがバッファ内で受信されるように、より低いステップ幅をもたらす量子化パラメータQtの値を設定することが可能であり得る。符号化されたベースストリームを復号化することが必要とされないため、「フィラー」データがベースエンコーダストリーム内で(例えば、バッファの前またはバッファでのいずれかで)削除または置き換えられ得るため、このことは、可能である。
【0092】
図9では、レートコントローラ900は、ターゲットサイズ推定コンポーネント910を含む。これは、バッファからの信号940およびベースからの信号942を受信する。ターゲットサイズ推定コンポーネント910は、バッファからの信号940を介したバッファのステータスと、ベースエンコーダがベースからの信号942を介してフレームに追加する予定である「フィラー」データの量に関する情報と、を受信するように構成され得る。したがって、ターゲットサイズ推定コンポーネントは、フレームのターゲットデータサイズを決定する。バッファ内に保持されるデータの量は、0~1、または0%~100%の範囲内で正規化され得る「満杯」パラメータによって示され得、ここで、60%は、バッファが60%満たされている(すなわち、40%の残りの空間を有する)ことを示す。この場合、マッピング関数またはルックアップテーブルは、「満杯」ビンから「ターゲットサイズ」パラメータにマッピングするように定義され得、ターゲットサイズは、第1および第2の強化層のうちの1つ以上によって符号化される次のフレームのターゲットサイズである。ある場合には、マッピング関数またはルックアップテーブルは、実験に基づいて設定され得る非線形マッピングを実装し得る。ある場合には、ターゲットサイズ推定はまた、(例えば、ハイブリッドビデオストリームの残りがベースストリームによって満たされて)強化ストリームによって満たされるハイブリッドビデオストリームの所望の割合を示す構成パラメータに基づいて設定され得る。
【0093】
図9の実施例では、ターゲットサイズ推定コンポーネント910によって決定されるターゲットサイズは、Q推定コンポーネント920に伝達される。
図9では、Q推定コンポーネント920は、加えて、前のフレームからの量子化パラメータQ
t-1のセットを記憶するパラメータバッファ930からの入力を受信する。したがって、
図6と同様の様態で、第1のフレームを符号化するために使用されるデータ量を使用して、後続フレームを符号化するための量子化パラメータを設定するフィードバック機構が提供される。
【0094】
図9では、Q推定コンポーネント920は、ターゲットサイズ推定コンポーネント910からターゲットサイズ、前のフレームから量子化パラメータQ
t-1のセット、および前のフレーム(「現在のサイズ」)から量子化パラメータQ
t-1のセットで符号化された現在のフレームのサイズ(現在のデータサイズ)を受信する。現在のフレームのサイズは、現在のサイズ推定コンポーネント940によって供給され得る。現在のサイズ推定コンポーネント940は、強化符号化パイプライン(例えば、L-1またはL-2コンポーネント)のうちの少なくとも1つの少なくとも一部の実装形態を使用して、パラメータバッファ930からの入力に基づいて現在のサイズを決定し得る。現在のサイズ推定コンポーネント940は、現在のサイズ推定コンポーネント940が、前のフレームからの符号化データのセットを与えられて、所与のフレームを符号化するためのサイズメトリックをシミュレートする点で、
図6の慣性パラメータ計算器632のバージョンを含み得る。ある場合には、「現在のサイズ」情報は、強化符号化パイプラインのうちの少なくとも1つの並列コピーによって決定され得、例えば、現在のフレームは、送信のための量子化パラメータQ
tで量子化されることになるが、現在のサイズ推定コンポーネント940は、Q
t-1を受信し、送信されない符号化を実行することによって、これらの量子化パラメータに基づいて現在のサイズを決定する。別の実施例では、現在のサイズは、例えば、事前に記録されたビデオの事前処理に基づいて、クラウド構成インターフェースから代替的に受信され得る。
図6に示されるもののような、この他の実施例では、並列の実装形態は、必要とされなくてもよい。
【0095】
図9では、Q推定コンポーネント920は、Q推定コンポーネント920の入力(例えば、上述したような)を取得し、推定量子化パラメータQ’
tの初期セットを計算する。ある場合には、このことは、データサイズ(例えば、ターゲットまたは現在のサイズによって表される)を量子化パラメータにマッピングするサイズ関数のセットを使用して実行され得る。データサイズおよび/または量子化パラメータは、例えば、0~1の値に、正規化され得る。量子化パラメータは、量子化ステップサイズと関連付けられ得、例えば、量子化パラメータは、量子化ステップサイズに反比例する「品質係数」であり得、および/または量子化ステップサイズであり得る。
【0096】
図9の実施例では、正規化されたサイズを量子化パラメータにマッピングするために、曲線のセットが定義され得る。各曲線は、現在のフレームの特性に依存し得る乗数およびオフセットのうちの1つ以上を有し得る(例えば、フレーム内で符号化する情報の複雑さに依存し得る)。乗数およびオフセットは、曲線の形状を定義し得る。乗数は、量子化パラメータQの関数であるサイズ正規化関数に適用され得る。ある場合には、現在のサイズ(すなわち、Q
t-1で符号化されたフレームtのサイズ)およびQ
t-1を使用して、曲線のセットの空間内の点を定義し得る。この点は、曲線のセットから最も近い曲線のセットを選択するために使用され得る。これらは、点よりも上にある曲線、点よりも下にある曲線、または点に対して最も高い曲線もしくは最も低い曲線であり得る。最も近い曲線のセットを、点とともに補間関数で使用して、点と関連付けられた新しい曲線を決定し得る。この新しい曲線が決定されると、新しい曲線の乗数およびオフセットが決定され得る。次いで、これらの値を、受信されたターゲットサイズとともに使用して、Q
tの値を決定し得る(例えば、曲線は、サイズおよびQの関数を定義し得る)。
【0097】
場合によっては、少なくとも、レートコントローラ900のQ推定920は、適応的であり、1つ以上の以前のフレームの特性は、現在のフレームのQ推定に影響を与える。ある場合には、曲線のセットは、アクセス可能なメモリに記憶され、前のフレームについて決定された曲線のセットに基づいて更新され得る。場合によっては、適応的な量子化は、コーディング単位またはブロック内の異なる係数位置に対して、例えば(2×2または4×4変換の)4または16の係数の配列内の異なる要素に対して、異なって適用され得る。
【0098】
最後に、
図9の実施例は、Q推定コンポーネント920から出力された、推定された量子化パラメータQ’
tのセットを受信し、かつ1つ以上の要因に基づいてこのセットを補正する、Qキャッピングコンポーネント950を特徴とする。Qキャッピングコンポーネント950は、品質調整器650のバージョンまたは一部を含み得る。推定された量子化パラメータQ’
tのセットは、1つ以上の値を含み得る。ある場合には、量子化パラメータQ’
tの初期セットは、ベース符号化層の動作挙動および量子化パラメータQ
tの変化のうちの1つ以上に基づいて、補正され得る。ある場合には、推定された量子化パラメータQ’
tのセットは、この層からのデータとともに受信され得る、ベース符号化層によって使用される量子化パラメータのセットに基づいて、キャップされ得る。ある場合には、ベース符号化層データを使用する適応の有無にかかわらず、推定された量子化パラメータQ’
tのセットは、前の量子化パラメータのセットの値に基づいて、制限され得る。この場合、Q’
tの最小値および最大値のうちの1つ以上は、前のQ値(例えば、Q
t-1)に基づいて設定され得る。次いで、キャッピングの出力が、
図9の950によって示されるような量子化パラメータQ
tの最終セットとして提供される。
【0099】
ある場合には、量子化パラメータのセットは、Qtの1つの値を含む。この場合、Qtに基づいて、量子化コンポーネントのうちの1つによってフレームtに適用されるステップ幅を設定してもよい。ステップ幅を決定する関数はまた、最大ステップ幅に基づいてもよい(例えば、ステップ幅は、0~10の範囲であり得る)。例示的なステップ幅計算は、
ステップ幅=[(1-Q0.2)・(ステップ幅max-1)]+1
【0100】
ここで、
図10Aおよび
図10Bを参照して、特定の量子化の変形形態について記載する。これらは、1つ以上の量子化ブロックにおいて量子化パラメータがどのように適用され得るかについて記載する。
【0101】
図10Aは、定義されたステップ幅を有するビンに基づいて、残差および/または係数(変換された残差)の量子化がどのように実行され得るかの実施例を提供する。
図10Aは、単なる例として提供され、当該技術分野で知られているように、量子化を実装する異なる方法があり得る。
図10Aでは、x軸は、残差値または変換された係数値を表す。この実施例では、いくつかのビンが、5のステップ幅で定義されている。ステップ幅のサイズは、例えば、パラメータ値に基づいて、選択可能であり得る。場合によっては、ステップ幅のサイズは、例えば、上述したレート制御の実施例に基づいて、動的に設定され得る。
【0102】
図10Aでは、ステップ幅は、0~4、5~9、10~14、15~19(すなわち、0~4は、0および4の両方を含む)の範囲の残差値に対応するビンをもたらす。ビン幅は、必要に応じて、端点を含む、または除外するように構成され得る。この実施例では、量子化は、ビンに分類されるすべての値を整数値で置き換えることによって実行される(例えば、0~4(両端含む)の残差値は、1の量子化値を有する)。
図10Aでは、量子化は、ステップ幅(例えば、5)で除算し、結果の床(すなわち、正の値の10進数よりも小さい最も近い整数)を取り、次いで、1を加算する(例えば、3/5=0.6、floor(0.6)=0、0+1=1、または16/5=3.2、floor(3.2)=3、3+1=4)ことによって実行され得る。負の値は、例えば、絶対値への作用後に、計算に続く負の値への変換によって、同様の方法で扱われ得る(例えば、abs(-9)=9、9/5=1.8、floor(1.8)=1、1+1=2、2*-1=-2)。
図10Aは、すべてのビンが共通のステップ幅を有する線形量子化の場合を示す。このアプローチに基づく様々な異なる実装形態が実施され得、例えば、第1のビンは、1に代えて0の量子化された値を有し得るか、または1~5(両端含む)の値を含み得ることに留意されたい。
図10Aは、所与のステップ幅のビンによる量子化の一簡易説明図である。
【0103】
図10Bは、いわゆる「デッドゾーン」(DZ)がどのように実装され得るかを示す。
図10Bでは、予め定義された範囲内の値を有する残差または変換された係数が、0に設定される。
図10Bでは、予め定義された範囲は、0の値の周りの範囲である。
図10Bでは、6未満であり、かつ-6より大きい値は、0に設定される。デッドゾーンは、固定範囲(例えば、-6~6)として設定され得るか、またはステップ幅に基づいて設定され得る。ある場合には、デッドゾーンは、予め定義されたステップ幅の倍数として、例えば、ステップ幅値の線形関数として、設定され得る。
図10Bの実施例では、デッドゾーンは、2.4*ステップ幅として設定されている。それゆえ、5のステップ幅では、デッドゾーンは-6~+6にわたる。他の場合、デッドゾーンは、ステップ幅値の非線形関数として設定され得る。
【0104】
ある場合には、デッドゾーンは、動的なステップ幅に基づいて設定され、例えば、適応的であり得る。この場合、デッドゾーンは、ステップ幅が変化するにつれて変化し得る。例えば、ステップ幅が5に代えて3に更新された場合、2.4*ステップ幅のデッドゾーンは、-6~+6の範囲から-3.6~3.6の範囲に変化し得るか、または、ステップ幅が10に更新された場合、デッドゾーンは、-12~12にわたるように変化し得る。ある場合には、ステップ幅の乗数は、2~4の範囲であり得る。ある場合には、乗数はまた、例えば、利用可能なビットレートなどの動作条件に基づいて、適応的であり得る。デッドゾーンを有することは、ネットワークを介して送信されるデータの量を低減するのに役立ち、例えば、ビットレートを低減するのに役立ち得る。デッドゾーンを使用する場合、デッドゾーンに分類される残差または係数値は、事実上無視される。
【0105】
ある場合には、量子化のステップ幅は、変換された係数の2×2または4×4ブロック内の異なる係数に対して変動し得る。例えば、復号化された信号の知覚により大きな影響を与えるように実験的に決定される係数には、より小さいステップ幅が割り当てられ得、例えば、上述したような方向分解(DD-2乗または「DDS」)では、AA、AH、AV、およびAD係数に、より小さいステップ幅が割り当てられ、後者の係数ほど、大きいステップ幅が割り当てられ得る。この場合、デフォルトのステップ幅を設定するbase_stepwidthパラメータが定義され得、次いで、これに修飾子を適用して、量子化(および非量子化)で使用するmodified_stepwidth、例えば、modified_stepwidth=base_stepwidth*修飾子、を計算し得、修飾子は、ブロックまたは単位内の特定の係数に基づいて設定され得る。
【0106】
場合によっては、修飾子はまた、または代替的に、強化のレベルに依存し得る。例えば、ステップ幅は、レベル1の強化ストリームに対してより小さくてもよく、それは、ステップ幅が、より高い品質レベルの複数の再構成された画素に影響を与え得るためである。
【0107】
場合によっては、修飾子は、ブロック内の係数および強化レベルの両方に基づいて定義され得る。ある場合には、量子化行列は、異なる係数および異なる強化レベルに対する修飾子のセットで定義され得る。この量子化行列は、エンコーダとデコーダとの間で信号伝達され得る。ある場合には、量子化行列は、本明細書に記載されるように、レートコントローラによって出力された量子化パラメータを使用して、エンコーダで構成され得る。
【0108】
ある場合には、異なる量子化モードが定義され得る。1つのモードでは、共通の量子化行列が、両方の強化レベルに使用され得、別のモードでは、別個の行列が、異なるレベルに使用され得、さらに別のモードでは、量子化行列が、1つの強化レベルにのみ、例えば、レベル0にのみ使用され得る。量子化行列は、ブロック内の係数の位置によってインデックス付けされ得る(例えば、2×2ブロックに対して、x方向に0もしくは1、およびy方向に0もしくは1、または4×4ブロックに対して、0~3)。これらのモードは、適用されるレート制御モード、および制御される強化層の数に依存し得る。
【0109】
ある場合には、基本量子化行列は、値のセットで定義され得る。この基本量子化行列は、強化レベルのうちの1つ以上に対するステップ幅の関数であるスケーリング係数によって修飾され得る。ある場合には、スケーリング係数は、ステップ幅変数のクランプ関数であり得る。デコーダにおいて、ステップ幅変数は、レベル0ストリームおよびレベル1ストリームのうちの1つ以上に対してエンコーダから受信され得る。ある場合には、量子化行列内の各エントリは、スケーリング係数の指数関数を使用してスケーリングされ得、例えば、各エントリは、スケーリング係数の累乗に引き上げられ得る。
【0110】
図11は、本発明の実施形態による符号化プロセスのフローチャートである。
【0111】
符号化プロセスは、本明細書に記載されるエンコーダ100および/または異なるエンコーダを使用して実装され得る。符号化プロセスは、入力ビデオをハイブリッドビデオストリームとして符号化するためのものである。符号化されたハイブリッドビデオストリームは、符号化されたベースストリームおよび複数の強化ストリームを含む。
【0112】
ステップS102では、第1の解像度で入力ビデオを受信する。入力ビデオは、解像度を有する任意の既知のフォーマットで提供され得る。ステップS104では、この方法は、符号化のための所望の品質レベルの表示を取得することを含む。これは、出力された品質レベルのセットにマッピングされる定義された範囲内のパラメータを含み得、および/または定義されたビットレートもしくはビットレートメトリックを含み得る。符号化プロセスは、ハイブリッドビデオストリームを生成する。復号化されると、ハイブリッドビデオストリームは、ビデオを品質のレベル/品質レベルにレンダリングする。ハイブリッドビデオストリームは、第2の解像度の符号化されたベースストリームと、第1の解像度および第2の解像度の各々の複数の強化ストリームとを、含み、第1の解像度は、第2の解像度よりも高い。
【0113】
ステップS106では、この方法は、複数の強化ストリームの各々を符号化することを含む。このことは、各強化ストリームに対してステップS108~S114の反復を命令することを含み得る。ステップS108では、この方法は、入力ビデオと、強調ストリームのそれぞれの解像度の再構成されたビデオと、の間の差異に基づいて、残差のセットを生成することを含む。例えば、本明細書に記載される第1の強化レベルでは、解像度は、入力ビデオの解像度よりも低くてもよい。したがって、各強化ストリームの残差の生成は、補正データを提供し、補正データは、ベース層で復号化されると、それぞれの解像度でビデオデータをレンダリングする。ステップS110では、この方法は、所望の品質レベルに基づいて、残差のセットに対する量子化パラメータを決定するステップを実行する。これは、本明細書に記載されるレートコントローラ(
図4~
図9のいずれか1つに示されるものなど)を使用して実行され得る。ステップS104で取得された所望の品質のレベルに基づいて量子化パラメータを決定することにより、符号化処理および/またはフレームコンテンツに起因するビットレートの変動にかかわらず、符号化処理中に品質レベルが維持され得る。ステップS112では、この方法は、ステップS110で決定された量子化パラメータに基づいて、残差を量子化することを含む。このことは、
図10Aおよび
図10Bのうちの1つ以上に示されるように、量子化パラメータを使用してステップ幅を決定することと、量子化を実行することと、を含み得る。ステップS112の反復を介して、強化ストリームの各々は、そのストリームに対して決定された量子化パラメータに基づいて量子化される。好ましい場合、各強化ストリームに対する量子化パラメータは異なるが、特定の実施例では、各ストリームに対する量子化パラメータを使用することが望ましい場合がある。このプロセスは、各強化層に対して実行されるため、ステップS108へのプロセスの任意選択の戻りが示されている。ステップS114では、量子化が決定された後、この方法は、量子化された残差のセットから符号化されたストリームを作成することに進む。次いで、ステップS114の繰り返しによって出力された符号化された強化ストリームを、符号化されたベースストリームと組み合わせて、ハイブリッドビデオストリームを生成し得る。場合によっては、ベースレベルストリームおよび強化ストリームは、別個に符号化され、例えば、符号化されたベースストリームは、強化ストリームに異なる符号化アプローチを使用する独立したベースコーデックによって生成される。
【0114】
本明細書に記載されるような特定の方法およびエンコーダコンポーネントは、非一時的コンピュータ可読媒体上に記憶された命令によって実行され得る。非一時的コンピュータ可読媒体は、1つ以上のコンピュータによって実行された場合、コンピュータに、本明細書に記載されるような、エンコーダコンポーネントの方法のステップを実行させるか、またはエンコーダコンポーネントの演算を実行させる命令を含むコードを記憶する。非一時的コンピュータ可読媒体は、回転磁気ディスク、回転光学ディスク、フラッシュランダムアクセスメモリ(RAM)チップ、および他の機械的に作動する記憶媒体またはソリッドステート記憶媒体のうちの1つ以上を含み得る。いくつかの実施例は、半導体チップなどの物理デバイス、そのようなデバイスの論理的または機能的挙動のハードウェア記述言語表現、およびそのようなハードウェア記述言語表現を記憶するように配設された1つ以上の非一時的なコンピュータ可読媒体として実装され得る。原理、態様、および実施形態を列挙する本明細書の説明は、その構造的および機能的均等物の両方を包含する。
【0115】
本明細書には特定の実施例が記載されており、異なる実施例に由来する異なる構成要素の異なる組み合わせが可能であり得ることに留意されたい。実施例をよりよく説明するために顕著な特徴が提示されているが、記載されるように、これらの実施例の機能的態様を改変することなく、特定の特徴が追加、改変、および/または省略されてもよいことは明らかである。「結合された」または「通信可能に結合された」と本明細書に記載される要素は、1つ以上の他の介在要素を使用する、直接接続または間接接続によって実現可能な有効な関係を有する。別のデバイス、モジュール、もしくは要素と「通信する」または「と通信している」と本明細書に記載される実施例は、任意の形態の通信またはリンクを含む。さらに、添付の特許請求の範囲で定義されている本発明の範囲から逸脱することなく、上述されていない均等物および改変物を使用することもできる。