特許第6286718号(P6286718)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6286718高効率な次世代ビデオコーディングのためのフレーム階層応答型量子化を使用する、コンテンツ適応ビットレートおよび品質管理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6286718
(24)【登録日】2018年2月16日
(45)【発行日】2018年3月7日
(54)【発明の名称】高効率な次世代ビデオコーディングのためのフレーム階層応答型量子化を使用する、コンテンツ適応ビットレートおよび品質管理
(51)【国際特許分類】
   H04N 19/126 20140101AFI20180226BHJP
   H04N 19/30 20140101ALI20180226BHJP
   H04N 19/159 20140101ALI20180226BHJP
【FI】
   H04N19/126
   H04N19/30
   H04N19/159
【請求項の数】55
【全頁数】102
(21)【出願番号】特願2015-551074(P2015-551074)
(86)(22)【出願日】2014年1月30日
(65)【公表番号】特表2016-508327(P2016-508327A)
(43)【公表日】2016年3月17日
(86)【国際出願番号】US2014013915
(87)【国際公開番号】WO2014120960
(87)【国際公開日】20140807
【審査請求日】2015年6月24日
(31)【優先権主張番号】61/758,314
(32)【優先日】2013年1月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】イェンニティ、サイラム
(72)【発明者】
【氏名】プリ、アトゥル
【審査官】 長谷川 素直
(56)【参考文献】
【文献】 特開2012−124896(JP,A)
【文献】 国際公開第2011/130680(WO,A1)
【文献】 Junjun Si(外3名),Adaptive rate control for HEVC,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 JCTVC-J0057,米国,ITU-T,2012年 7月20日,p.1-9
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00−19/98
(57)【特許請求の範囲】
【請求項1】
ビデオコーディングのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
少なくとも1つの現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する量子化パラメータ(Qp)を決定する段階とを備え、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与され、
前記量子化パラメータを決定する段階は、
ランク(0)以外の複数のフレームの前記量子化パラメータを、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出する段階を有する、方法。
【請求項2】
少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供する段階を備える、請求項1に記載の方法。
【請求項3】
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供する段階を備える、請求項1に記載の方法。
【請求項4】
Qpと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク(0)のP‐ピクチャの初期のQpを形成する段階を備える、請求項1に記載の方法。
【請求項5】
前記ランク(0)のI‐ピクチャの複数のフレームの前記Qpを形成すべく、少なくとも前記P‐ピクチャのランク(0)の複数のフレームの初期のQpを使用する段階を備える、請求項1に記載の方法。
【請求項6】
フレームのための前記ランク(0)のI‐ピクチャのQp値を形成すべく、P‐ピクチャのランク(0)のQp値の、ランク(0)のI‐ピクチャのQp値に対する所定のマッピングを使用する段階を備える、請求項5に記載の方法。
【請求項7】
各非ゼロレべルのための固定初期フレームQpを決定する段階を備える、請求項1に記載の方法。
【請求項8】
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームQpが、前記非ゼロレベル上のすべてのフレームに対して確立される、請求項7に記載の方法。
【請求項9】
ランク(0)以外の複数のフレームの前記Qpを、以下の式から導出する段階を備え、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク(0)の複数のP‐ピクチャのための初期のQpで、fpic_qは、前記ランク(0)の複数の機能性(F)‐ピクチャのために使用される前記初期のQpで、かつ、rは分析されている現在のフレームの前記ランクであり、F‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、請求項1に記載の方法。
【請求項10】
複数の制限値をQp値に適用する段階を備えており、
前記複数の制限値は、
(1)シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数(bpp)との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
(2)シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
(3)複数のQp制限値を判断するために使用される中間Qpとしてこれまでにエンコードされた複数の前記フレームの平均Pqpを設定する段階の少なくとも1つから導き出され、
(2)において、
これまでにエンコードされた複数の前記フレームの中間Qpは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Pqp、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション(2)は、結果的に得られる前記中間Qpが前記平均Pqpの特定の割合の範囲内であるときに使用され、
(3)において、Pqpが前記P‐ピクチャのランク(0)のQpである、請求項1に記載の方法。
【請求項11】
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のQpに対して、より最終的なフレームQpを別に決定する段階を備える、請求項1に記載の方法。
【請求項12】
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のQpに対して、より最終的なフレームQpを決定する段階を備える、請求項1に記載の方法。
【請求項13】
初期のP‐ピクチャのランク(0)のQpと、I‐ピクチャ対P‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、P‐ピクチャのための推定されるビット数の値(P_est_bits)を、確立する段階を備える、請求項1に記載の方法。
【請求項14】
機能性(F)‐ピクチャのための推定されるビット数の値(F_est_bits)を、初期のP‐ピクチャのランク(0)のQpと、P‐ピクチャ対F‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、前記F‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、請求項1に記載の方法。
【請求項15】
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームを機能性(F)‐ピクチャに提供する前記オプションを提供する段階を備える、請求項8または13に記載の方法。
【請求項16】
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともP‐ピクチャ、機能性(F)‐ピクチャ、B‐ピクチャ、またはI‐ピクチャを含む、請求項1に記載の方法。
【請求項17】
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームQpを決定する段階を備える、請求項1に記載の方法。
【請求項18】
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファである、請求項17に記載の方法。
【請求項19】
バッファのバッファ充填量に応答する、フレームのためのより最終的なQpを決定する段階であって、
レベル応答型の複数のQpモデルで、前記フレームのビット数を推定する段階と、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証(VBV)デルタを適用するかどうかを判断する段階と、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、
前記VBVデルタを適用すると判断された場合に前記VBVデルタによって調整される初期のQpおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なQpを決定する段階とを含み、
前記VBVデルタは、バッファステータスに関連付けられており、バッファの中間動作Qpに対し前記初期のQpを調整すべく適用されており
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームの前記ビット数を推定する前記段階に基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられている段階を備える、請求項1に記載の方法。
【請求項20】
前記初期のQpは、ランク(0)のP‐ピクチャのQpである、請求項19に記載の方法。
【請求項21】
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、前記現在のフレームのためのより最終的なQpを形成する段階を備え、
前記事前分析する段階は、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の複雑度および動き特性を決定する段階を含む、請求項1に記載の方法。
【請求項22】
デルタ値でより初期のQpを調整する段階に少なくとも部分的に基づいて、より最終的なQpを決定する段階を備え、
前記調整する段階は、デルタ値を
(1)複雑度デルタ、および
(2)バッファの充填量に関連付けられたビデオバッファ検証(VBV)デルタを用いて決定する段階を含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
I‐ピクチャに対するフレームの全ビット量と、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと
フレームの前記全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタQp係数スムージングとの少なくとも1つを含む、請求項21に記載の方法。
【請求項23】
使用されたビット数および分析された複数の前記フレームの複雑度を取得すべく、初期のQpの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第1のパス分析を実行する段階と、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントQp近傍に、Qpを維持すべく、デルタ値によって前記初期のQpを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームQpを決定すべく、第2のパス分析を実行する段階とを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されているフレームシーケンスの前記複雑度に関連付けられている、請求項1に記載の方法。
【請求項24】
少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供する段階を備え、
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供する段階を備え、
Qpと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク(0)のP‐ピクチャの初期のQpを形成する段階を備え、
前記ランク(0)のI‐ピクチャの複数のフレームの前記Qpを形成すべく、少なくとも前記P‐ピクチャのランク(0)の複数のフレームの前記初期のQpを使用する段階を備え、
フレームのためのランク(0)のI‐ピクチャのQp値を形成すべく、P‐ピクチャのランク(0)のQp値の、ランク(0)のI‐ピクチャのQp値に対する所定のマッピングを使用する段階を備え、
各非ゼロレべルのための固定初期フレームQpを決定する段階を備え、
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームQpが、前記非ゼロレベル上のすべてのフレームに対して確立され、
ランク(0)以外の複数のフレームの前記Qpを、以下の式から導出する段階を備え、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク(0)の複数のP‐ピクチャのための初期のQpで、fpic_qは、前記ランク(0)の複数の機能性(F)‐ピクチャのために使用される前記初期のQpで、かつ、rは分析されている現在のフレームの前記ランクであり、
オプションとして、
複数の制限値をQp値に適用する段階を備えており、
前記複数の制限値は、
(1)シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数(bpp)との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
(2)シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
(3)複数のQp制限値を判断するために使用される中間Qpとしてこれまでにエンコードされた複数の前記フレームの平均Pqpを設定する段階の少なくとも1つから導き出され、
(2)において、
これまでにエンコードされた複数の前記フレームの中間Qpは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Pqp、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション(2)は、結果的に得られる前記中間Qpが前記平均Pqpの特定の割合の範囲内であるときに使用され、
(3)において、Pqpは前記P‐ピクチャのランク(0)のQpであり、
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のQpに対して、より最終的なフレームQpを別に決定する段階を備え、
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のQpに対して、より最終的なフレームQpを決定する段階を備え、
前記初期のP‐ピクチャのランク(0)のQpと、I‐ピクチャ対P‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、P‐ピクチャのための推定されるビット数の値(P_est_bits)を、確立する段階を備え、
F‐ピクチャのための推定されるビット数の値(F_est_bits)を、初期のP‐ピクチャのランク(0)のQpと、P‐ピクチャ対F‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、前記F‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをF‐ピクチャに提供する前記オプションを提供する段階を備え、
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともP‐ピクチャ、F‐ピクチャ、B‐ピクチャ、またはI‐ピクチャを含む、
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームQpを決定する段階を備え、
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、
バッファのバッファ充填量に応答する、フレームのためのより最終的なQpを決定する段階であって、
レベル応答型の複数のQpモデルで、前記フレームのビット数を推定する段階と、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証(VBV)デルタを適用するかどうかを判断する段階と、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、
前記VBVデルタを適用すると判断された場合に前記VBVデルタによって調整される前記初期のQpおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なQpを決定する段階とを含み、
前記VBVデルタは、バッファステータスに関連付けられており、バッファの中間動作Qpに対し初期のQpを調整すべく適用されており、
前記1または複数の閾値は、前記バッファインクリメントのレートの閾値、および、前記バッファの前記充填量のバッファ推定の閾値の少なくとも1つであり、
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームのビット数を推定する段階に基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられている段階を備え、
前記初期のQpは、ランク(0)のP‐ピクチャのQpであり、
少なくとも以下の(A)および(B)の1つを含んでおり、
(A)ルックアヘッドを備える単一パスの分析を実行する段階であって、
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、前記現在のフレームのためのより最終的なQpを形成する段階を備え、
前記事前分析する段階は、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の前記複雑度および動き特性を決定する段階を含む、
デルタ値でより初期のQpを調整する段階に少なくとも部分的に基づいて、より最終的なQpを決定する段階を備え、
前記調整する段階は、デルタ値を
(1)複雑度デルタ、および
(2)バッファの充填量に関連付けられたビデオバッファ検証(VBV)デルタを用いて決定する段階を含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
I‐ピクチャに対するフレームの全ビット量と、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、
フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタQp係数スムージングとの少なくとも1つを含むルックアヘッドを備える単一パスの分析を実行する段階と、
(B)2パスの分析を実行する段階であって、
使用された前記ビット数および分析された複数の前記フレームの複雑度を取得すべく、前記初期のQpの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第1のパス分析を実行する段階と、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントQp近傍に、Qpを維持すべく、デルタ値によって前記初期のQpを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームQpを決定すべく、第2のパス分析を実行する段階とを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されている前記フレームシーケンスの前記複雑度に関連付けられている2パスの分析を実行する段階を備える、請求項1に記載の方法。
【請求項25】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
前記グラフィックス処理ユニットは、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
少なくとも1つの現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する量子化パラメータ(Qp)を決定すると共に、ランク(0)以外の複数のフレームの前記量子化パラメータを、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出し、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されるよう構成されているコーダ。
【請求項26】
さらに、少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供し、
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供し、
Qpと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク(0)のP‐ピクチャの初期のQpを形成し、
前記ランク(0)のI‐ピクチャの複数のフレームの前記Qpを形成すべく、少なくとも前記P‐ピクチャのランク(0)の複数のフレームの前記初期のQpを使用し、
フレームのためのランク(0)のI‐ピクチャのQp値を形成すべく、P‐ピクチャのランク(0)のQp値の、ランク(0)のI‐ピクチャのQp値に対する所定のマッピングを使用し、
各非ゼロレベルのための固定初期フレームQpを決定し、
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームQpが、前記非ゼロレベル上のすべてのフレームに対して確立され、
ランク(0)以外の複数のフレームの前記Qpを、以下の式から導出し、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク(0)の複数のP‐ピクチャのための初期のQpで、fpic_qは、前記ランク(0)の複数の機能性(F)‐ピクチャのために使用される前記初期のQpで、かつ、rは分析されている現在のフレームの前記ランクであり、
オプションとして、
複数の制限値をQp値に適用し、
前記複数の制限値は、
(1)シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数(bpp)との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
(2)シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
(3)複数のQp制限値を判断するために使用される中間Qpとしてこれまでにエンコードされた複数の前記フレームの平均Pqpを設定することの少なくとも1つから導き出され、
(2)において、
これまでにエンコードされた複数の前記フレームの中間Qpは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Pqp、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション(2)は、結果的に得られる前記中間Qpが前記平均Pqpの特定の割合の範囲内であるときに使用され、
(3)において、Pqpは前記P‐ピクチャのランク(0)のQpであり、
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のQpに対して、より最終的なフレームQpを別に決定し、
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のQpに対して、より最終的なフレームQpを決定し、
前記初期のP‐ピクチャのランク(0)のQpと、I‐ピクチャ対P‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、P‐ピクチャのための推定されるビット数の値(P_est_bits)を確立し、
F‐ピクチャのための推定されるビット数の値(F_est_bits)を、初期のP‐ピクチャのランク(0)のQpと、P‐ピクチャ対F‐ピクチャのビット率との間の所定の関係に基づいて確立することを備え、前記F‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをF‐ピクチャに提供する前記オプションを提供し、
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともP‐ピクチャ、F‐ピクチャ、B‐ピクチャ、またはI‐ピクチャを含み、
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームQpを決定し、
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、
バッファのバッファ充填量に応答する、フレームのためのより最終的なQpを決定することであって、
レベル応答型の複数のQpモデルで、前記フレームのビット数を推定し、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証(VBV)デルタを適用するかどうかを判断し、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算し、
前記VBVデルタを適用すると判断された場合に前記VBVデルタによって調整される前記初期のQpおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なQpを決定することとを含み、
前記VBVデルタは、バッファステータスに関連付けられており、バッファの中間動作Qpに対し初期のQpを調整すべく適用されており、
前記1または複数の閾値は、前記バッファインクリメントのレートの閾値、および、前記バッファの前記充填量のバッファ推定の閾値の少なくとも1つであり、
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームのビット数を推定することに基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられており、
前記初期のQpは、ランク(0)のP‐ピクチャのQpであり、
少なくとも以下の(A)および(B)の1つを含んでおり、
(A)ルックアヘッドを備える単一パスの分析を実行することであって、
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析することに少なくとも部分的に依存して、前記現在のフレームのためのより最終的なQpを形成し、
前記事前分析することは、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の前記複雑度および動き特性を決定することを含み、
デルタ値でより初期のQpを調整することに少なくとも部分的に基づいて、より最終的なQpを決定し、
前記調整することは、デルタ値を
(1)複雑度デルタ、および
(2)バッファの充填量に関連付けられたビデオバッファ検証(VBV)デルタを用いて決定することを含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
I‐ピクチャに対するフレームの全ビット量と、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、
フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替えることを含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタQp係数スムージングとの少なくとも1つを含むルックアヘッドを備える単一パスの分析を実行することと、
(B)2パスの分析を実行することであって、
使用された前記ビット数および分析された複数の前記フレームの複雑度を取得すべく、前記初期のQpの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第1のパス分析を実行し、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントQp近傍に、Qpを維持すべく、デルタ値によって前記初期のQpを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームQpを決定すべく、第2のパス分析を実行することを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されている前記フレームシーケンスの前記複雑度に関連付けられている2パスの分析を実行することを備えるよう構成されている、請求項25に記載のコーダ。
【請求項27】
ビデオコーディングのためのルックアヘッドを備える1パスレートコントロールのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する初期の量子化パラメータ(Qp)を決定する段階であって、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与される段階と、
現在のフレームに対する、複数の将来のフレームであり、かつ、複数のルックアヘッドフレームを完全にエンコードせずに、前記複数のルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を決定すべく、分析された、多数のルックアヘッドフレームを事前分析する段階と、
前記現在のフレームの前記初期のQpを調整すべく、前記複数のルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なQpを決定する段階とを備え、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
前記初期の量子化パラメータを決定する段階は、
ランク(0)以外の複数のフレームの前記初期の量子化パラメータを、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出する段階を有する、方法。
【請求項28】
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定する段階に少なくとも部分的に基づいて、より最終的なQpを決定する段階を備え、
前記バッファは、前記ルックアヘッドの複数の将来のフレームのためのスペースを含む、請求項27に記載の方法。
【請求項29】
バッファステータスを決定する前記段階は、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントQpに近づけるべく、複数のフレームのための現在のQpを変調する段階を含む、請求項28に記載の方法。
【請求項30】
前記より最終的なQpを決定する段階は、前記バッファの前記充填量ステータスに関連付けられたビデオバッファ検証デルタで少なくとも部分的に形成されたデルタ値によって、初期のQpを調整する段階を含む、請求項28に記載の方法。
【請求項31】
前記より最終的なQpを決定する段階は、分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタで少なくとも部分的に形成されたデルタ値によって、初期のQpを調整する段階を含む、請求項28に記載の方法。
【請求項32】
前記複雑度デルタは、
適応量子化を実行する段階、および
前記フレームシーケンスの平均複雑度を使用する段階によって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含む、請求項31に記載の方法。
【請求項33】
前記複雑度デルタは、適応量子化を実行する段階によって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、I‐ピクチャに対する、かつ、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定される、請求項31に記載の方法。
【請求項34】
VBVデルタ後の結果的に得られるQpが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるQpを調整する、請求項31に記載の方法。
【請求項35】
前記より最終的なQpを決定する段階は、適応量子化を実行することによって初期のQpを調整する段階と、
複数の連続するフレーム間のQpの変化を制限するためのVBVのQp係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、
前記適応量子化は、前記初期のQpを調整するための前記デルタを形成する、請求項31に記載の方法。
【請求項36】
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定する段階に少なくとも部分的に基づいて、より最終的なQpを決定する段階を備え、
前記バッファは、前記ルックアヘッドの複数の将来のフレームのためのスペースを含み、
バッファステータスを決定する前記段階は、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントQpに近づけるべく、複数のフレームのための現在のQpを変調する段階を含み、
前記より最終的なQpを決定する段階は、
前記バッファの充填量ステータスに関連付けられたビデオバッファ検証デルタと、
分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタとの、少なくとも1つによって部分的に形成されたデルタ値による、初期のQpを調整する段階を含み、
前記複雑度デルタは、
適応量子化を実行する段階、および
前記フレームシーケンスの平均複雑度を使用する段階によって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含み、
前記複雑度デルタは、適応量子化を実行する段階によって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、I‐ピクチャに対する、かつ、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定され、
VBVデルタ後の結果的に得られるQpが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるQpを調整する、
前記より最終的なQpを決定する段階は、適応量子化を実行することによって初期のQpを調整する段階と、
複数の連続するフレーム間のQpの変化を制限するためのVBVのQp係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、
前記適応量子化は、前記初期のQpを調整するための前記デルタを形成する、請求項27に記載の方法。
【請求項37】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
前記グラフィックス処理ユニットは、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する初期の量子化パラメータ(Qp)を決定すると共に、ランク(0)以外の複数のフレームの前記初期の量子化パラメータを、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出し、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与され、
現在のフレームに対する、複数の将来のフレームであり、かつ、複数のルックアヘッドフレームを完全にエンコードせずに、前記複数のルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を決定すべく分析された、多数のルックアヘッドフレームを事前分析し、
前記現在のフレームの前記初期のQpを調整すべく、前記複数のルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なQpを決定し、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供されるよう構成されているコーダ。
【請求項38】
さらに、
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定することに少なくとも部分的に基づいて、より最終的なQpを決定し、
前記バッファは、ックアヘッドの複数の将来のフレームのためのスペースを含み、
バッファステータスを決定することは、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントQpに近づけるべく、複数のフレームのための現在のQpを変調することを含み、
前記より最終的なQpを決定することは、
前記バッファの充填量ステータスに関連付けられたビデオバッファ検証デルタと、
分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタとの、少なくとも1つによって部分的に形成されたデルタ値による、初期のQpを調整することを含み、
前記複雑度デルタは、
適応量子化を実行すること、および
前記フレームシーケンスの平均複雑度を使用することによって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含み、
前記複雑度デルタは、適応量子化を実行することによって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、I‐ピクチャに対する、かつ、前記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定され、
VBVデルタ後の結果的に得られるQpが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるQpを調整し、
前記より最終的なQpを決定することは、適応量子化を実行することによって初期のQpを調整することと、
複数の連続するフレーム間のQpの変化を制限するためのVBVのQp係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成することとを含んでおり、
前記適応量子化は、前記初期のQpを調整するための前記デルタを形成するように構成されている、請求項37に記載のコーダ。
【請求項39】
ビデオコーディングのための2パスレートコントロールのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
分析される各フレームのための初期の既定の量子化パラメータ(Qp)を用いて第1のパス分析を実行する段階と、
個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ(Qp)を決定する段階を含む第2のパス分析を実行する段階と、
コーディングに使用されるフレームのためのターゲットQp、および前記第1のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を決定する段階とを備え、
前記第1のパス分析を実行する段階において、複数の前記初期の既定のQpは、現在のフレームの前記階層の前記レベルに少なくとも部分的に基づいて確立され、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されており、ランク(0)以外の複数のフレームの前記初期の既定のQPは、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出され、かつ、前記第1のパス分析を実行する段階は、分析される複数の前記フレームのための複雑度およびビット数を決定するのに十分なように複数の前記フレームをエンコーディングする段階を含み、
前記第2のパス分析を実行する段階は、1または複数のフレームの品質を強化すべく、適応量子化を実行する段階を含み、前記適応量子化を実行する段階は、同一のシーケンス内の少なくとも1つの他のフレームのためのビット量を減少させつつ、少なくとも1つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含み、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される方法。
【請求項40】
前記第1のパス分析は、前記シーケンス内のすべての前記フレームをエンコードする、請求項39に記載の方法。
【請求項41】
複雑度、ビットレート、およびQpの間の所定の関係を使用することによって、前記初期の既定のランク(0)のP‐ピクチャが形成される、請求項39に記載の方法。
【請求項42】
フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングする段階を備える、請求項39に記載の方法。
【請求項43】
前記適応量子化を実行する段階は、I‐フレームに対する、かつ、前記I‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含む、請求項39に記載の方法。
【請求項44】
前記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含む、請求項39に記載の方法。
【請求項45】
スケーリングする段階および前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記方法は、前記第1のパス分析および前記ターゲットビットフレームサイズ(tgt_size)において決定された、前記フレームの前記ビット数およびQpに依存して、フレームのコーディングのための推定される最終的なQpを決定する段階を含む、請求項39に記載の方法。
【請求項46】
前記適応量子化を実行する段階は、デルタQp係数を形成し、かつ、
複数の連続するフレーム間のQpの変化を制限するための複数の連続するフレームのQp係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存する、請求項39に記載の方法。
【請求項47】
分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なQpを決定する段階を備える、請求項39に記載の方法。
【請求項48】
前記反復は、適応量子化のデルタQp係数も考慮する、請求項47に記載の方法。
【請求項49】
前記反復は、前記第1のパス分析からのフレーム毎の前記ビット数およびQpも考慮する、請求項47に記載の方法。
【請求項50】
前記反復は、
段階値に基づき、テストQp値を設定する段階と、
選択されたフレームのための予想される全ビット数を計算する段階と、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストQp値を別に変更する段階と、
テストQpを有限回数に設定することで、処理を再開する段階とを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタQp係数、および前記第1のパス分析からのフレーム毎のビット数およびQpに少なくとも部分的に基づいている、請求項47に記載の方法。
【請求項51】
前記第1のパス分析は、前記シーケンス内のすべての前記フレームをエンコードし、
複雑度、ビットレート、およびQpの間の所定の関係を使用することによって、前記初期の既定のランク(0)のP‐ピクチャが形成され、
フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングする段階を備え、
前記適応量子化を実行する段階は、I‐フレームに対する、かつ、前記I‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、
前記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、
スケーリングする段階および前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記方法は、前記第1のパス分析および前記ターゲットビットフレームサイズ(tgt_size)において決定された、前記フレームの前記ビット数およびQpに依存して、フレームのコーディングのための推定される最終的なQpを決定する段階を含み、
前記適応量子化を実行する段階は、デルタQp係数を形成し、かつ、
複数の連続するフレーム間のQpの変化を制限するための複数の連続するフレームのQp係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存し、
分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なQpを決定する段階を備え、
前記反復は、適応量子化の前記デルタQp係数も考慮し、
前記反復は、前記第1のパス分析からのフレーム毎の前記ビット数およびQpも考慮し、
前記反復は、
段階値に基づき、テストQp値を設定する段階と、
選択されたフレームのための予想される全ビット数を計算する段階と、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストQp値を別に変更する段階と、
テストQpを有限回数に設定することで、処理を再開する段階とを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタQp係数、および前記第1のパス分析からのフレーム毎のビット数およびQpに少なくとも部分的に基づいている、請求項39に記載の方法。
【請求項52】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
分析される各フレームのための初期の既定の量子化パラメータ(Qp)を用いて第1のパス分析を実行し、
個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ(Qp)を決定することを含む第2のパス分析を実行することと、
コーディングに使用されるフレームのためのターゲットQp、および前記第1のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を決定することとを備え、
前記第1のパス分析を実行することにおいて、複数の前記初期の既定のQpは、現在のフレームの前記階層の前記レベルに少なくとも部分的に基づいて確立され、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されており、ランク(0)以外の複数のフレームの前記初期の既定のQPは、Qpr = inter_q[0]+デルタ係数×r(但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク)から導出され、かつ、前記第1のパス分析を実行することは、分析される複数の前記フレームのための複雑度およびビット数を決定するのに十分なように複数の前記フレームをエンコーディングすることを含み、
前記第2のパス分析を実行することは、1または複数のフレームの品質を強化すべく、適応量子化を実行することを含み、前記適応量子化を実行することは、同一のシーケンス内の少なくとも1つの他のフレームのためのビット量を減少させつつ、少なくとも1つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含み、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のP‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供されるよう構成されているコーダ。
【請求項53】
前記第1のパス分析は、前記シーケンス内のすべての前記フレームをエンコードし、
複雑度、ビットレート、およびQpの間の所定の関係を使用することによって、前記初期の既定のランク(0)のP‐ピクチャが形成され、
前記コーダは、フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングするよう構成されており、
前記適応量子化を実行することは、I‐フレームに対する、かつ、前記I‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、
前記適応量子化を実行することは、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、
スケーリングすることおよび前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記第1のパス分析および前記ターゲットビットフレームサイズ(tgt_size)において決定された、前記フレームの前記ビット数およびQpに依存して、フレームのコーディングのための推定される最終的なQpを決定することを含み、
前記適応量子化を実行することは、デルタQp係数を形成し、かつ、
複数の連続するフレーム間のQpの変化を制限するための複数の連続するフレームのQp係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存し、
前記コーダは、分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なQpを決定するよう構成されており、
前記反復は、適応量子化の前記デルタQp係数も考慮し、
前記反復は、前記第1のパス分析からのフレーム毎の前記ビット数およびQpも考慮し、
前記反復は、
段階値に基づき、テストQp値を設定することと、
選択されたフレームのための予想される全ビット数を計算することと、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較することと、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストQp値を別に変更することと、
テストQpを有限回数に設定することで、処理を再開することとを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタQp係数、および前記第1のパス分析からのフレーム毎のビット数およびQpに少なくとも部分的に基づいているように構成されている、請求項52に記載のコーダ。
【請求項54】
コンピューティングデバイス上での実行に応答して、前記コンピューティングデバイスに対し、請求項1から24のいずれか一項に記載の方法を実行させる、少なくとも1つのプログラム。
【請求項55】
コンピュータによって請求項1から24のいずれか一項に記載の方法を実行する装置。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本出願は、2013年1月30日に出願された、「次世代ビデオコーディング」という発明の名称の米国仮出願第61/758,314の利益を主張する。
【背景技術】
【0002】
ビデオエンコーダは、特定の帯域幅を介して、より多くの情報が送信され得るように、ビデオ情報を圧縮する。すると、圧縮された信号は、表示に先立ち上記信号をデコードまたは展開するデコーダを有する受信機に送信され得る。
【0003】
High Efficient Video Coding(HEVC)は、ISO/IECのムービングピクチャエキスパーツグループ(MPEG)およびITU−Tのビデオコーディングエキスパーツグループ(VCEG)によって形成された、ジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)によって開発されている、最新のビデオ圧縮規格である。HEVCは、以前のH.264/AVC (Advanced Video Coding)規格が、複数の、より高い解像度のビデオアプリケーションを進化させるために十分な圧縮を提供しないことに応じて、開発されている。以前のビデオコーディング規格と同様、HEVCは、イントラ予測/インター予測、変換、量子化、インループフィルタリング、およびエントロピーコーディングといった、複数の基本的な機能モジュールを含む。
【0004】
現行のHEVC規格は、H.264/AVC規格の複数の制限に対する改善を試み得る。それら制限とは、許容される複数の予測パーティションおよび複数のコーディングパーティションに対する限定的な複数の選択肢、限定的な許容される複数の参照および予測生成、限定的な複数の変換ブロックサイズおよび複数の実際の変換、複数のコーディングアーチファクトを減少させるための限定的な複数のメカニズム、および複数の不十分なエントロピーエンコーディング技術といったものである。しかしながら、現行のHEVC規格はこのような複数の問題の解決にあたり、対話型アプローチを使用することができる。
【0005】
例えば、増加の一途をたどる圧縮されるビデオの解像度および高いビデオ品質に対する期待に伴い、H.264のような複数の既存のビデオコーディング規格またはH.265/HEVCのような進化中ですらある複数の規格を使用するコーディングに必要とされる、対応のビットレート/帯域幅は比較的高い。上記複数の規格は、複数の従来アプローチの複数の拡張形態を使用し、不十分な圧縮/品質の問題を暗黙に対処するが、しばしばそれらの結果は限定的である。
【0006】
本記載は、次世代ビデオ(NGV)コーデックプロジェクトの文脈において展開され、複数のデバイスへの実装にあたり十分実用的でありつつ、実現可能な圧縮効率を最大化する、高度なビデオコーデックを設計する一般的問題に対処する。例えば、複数の優れたディスプレイの利用可能性に起因し、増加の一途をたどるビデオ解像度および高いビデオ品質への期待に伴い、以前の複数のMPEG規格および、より最新のH.264/AVC規格等の既存の複数のビデオコーディング規格の使用に必要とされる、対応のビットレート/帯域幅は比較的高い。H.264/AVCは、複数の、より高い解像度のビデオアプリケーションの進化のための十分高い圧縮率を提供することを意識していなかった。
【0007】
本明細書に記載の内容は、例示であり、複数の添付図面における限定ではない。説明の簡素化および明確化のため、複数の図面内の複数の要素は、必ずしも正確な縮尺ではない。例えば、明確化のため、一部の要素の複数の寸法は、他の複数の要素に対し、誇張されていることがある。さらに、必要に応じて、対応するまたは類似の複数の要素を示すべく、複数の図面にわたり、複数の参照番号が繰り返される。以下、図面の簡単な説明を記載する。
【図面の簡単な説明】
【0008】
図1】次世代ビデオエンコーダの一例に係る例示的な図である。
図2】次世代ビデオデコーダの一例に係る例示的な図である。
図3A】次世代ビデオエンコーダおよび複数のサブシステムの一例に係る例示的な図である。
図3B】次世代ビデオデコーダおよび複数のサブシステムの一例に係る例示的な図である。
図4】本開示に係る量子化アダプタレートコントロールの図である。
図5】本開示に係る2パス量子化アダプタレートコントロールの図である。
図6】量子化アダプタレートコントロール処理のフローチャートである。
図7】1パス量子化アダプタレートコントロール処理のフローチャートである。
図8】階層フレーム構造内のフレームシーケンスの例示的な図である。
図9】レートコントロールスタートアップ処理のフローチャートである。
図10】階層フレーム構造の例示的な図である。
図11】階層フレーム構造の例示的な図である。
図12】Qp値に対する複雑度の一次関係を示すグラフである。
図13】Qp値に対する複雑度の二次関係を示すグラフである。
図14】ターゲットビットレートのbpp対bpp_idマッピングを示すテーブルである。
図15】複雑度基準のcpx対cpx_idマッピングを示すテーブルである。
図16】中間のQp値のテーブルである。
図17】最小Qp値のテーブルである。
図18】最大Qp値のテーブルである。
図19】I対Pビット率に対するQpのグラフである。
図20】バッファの例示的な図である。
図21】複数のバッファインクリメントのための複数のレート閾値のテーブルである。
図22A】2パス量子化アダプタレートコントロール処理の例示的なフローチャートである。
図22B】2パス量子化アダプタレートコントロール処理の例示的なフローチャートである。
図23】ルックアヘッドを備えた1パス量子化レートコントール処理の例示的なフローチャートである。
図24】ビデオコーディングシステムの一例に係る例示的な図である。
図25】システムの一例に係る例示的な図である。
図26】例示的なデバイスを示す。本開示の少なくとも一部の実装に従ってすべて配置されている。
【発明を実施するための形態】
【0009】
1または複数の実装が、複数の添付図面を参照して記載される。特定の複数の構成および配置が記載される一方で、これは例示目的にすぎないことを理解されたい。関連技術分野における当業者であれば、本記載の精神および範囲を逸脱することなく、他の複数の構成および配置が使用され得ることを認識するであろう。関連技術分野における当業者にとって、本明細書に記載の複数の技術および/または配置はまた、本明細書に記載された以外の他の様々なシステムおよびアプリケーションにおいて使用可能であることが明らかである。
【0010】
以下の詳細な説明は、例えば、システムオンチップ(SoC)等の複数のアーキテクチャ内で示され得る様々な実装を記載する一方で、本明細書に記載の複数の技術および/または配置の実装は、複数の特定のアーキテクチャおよび/またはコンピューティングシステムに限定されず、本明細書に記載の複数の技術および/または配置の実装は、同様の複数の目的のための任意のアーキテクチャおよび/またはコンピューティングシステムによって実装可能である。例えば、複数の集積回路(IC)チップおよび/または複数のパッケージ、および/または様々なコンピューティングデバイスおよび/または複数のセットトップボックス、複数のスマートフォン等のコンシューマエレクトロニック(CE)デバイスなどを使用する、様々なアーキテクチャは、本明細書に記載の複数の技術および/または配置を実装してよい。さらに、以下の詳細な説明は、複数のロジック実装、複数のシステムコンポーネントの複数のタイプおよび複数の相互関係、複数のロジックパーティショニング/統合の選択肢等、たくさんの具体的詳細について記載する可能性のある一方で、特許請求される主題は、そのような複数の具体的な詳細がなくても実行され得る。他の複数の例において、本明細書に開示の内容を不明瞭にするのを避けるべく、複数のコントロール構造および複数の完全なソフトウェア命令シーケンス等の一部の内容は、詳細に記載されない可能性がある。
【0011】
本明細書に開示の内容は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実装可能である。本明細書に開示の内容は、1または複数のプロセッサによって読み取りおよび実行可能な、機械可読媒体上に格納された複数の命令としても実装可能である。機械可読媒体は、機械(コンピューティングデバイス等)によって読み取られ得る形態で情報を格納または送信するための任意の媒体および/またはメカニズムを含んでよい。例えば、機械可読媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶装置、複数のフラッシュメモリデバイス、複数の伝播信号の電気的、光学的、音響的または他の形態(例えば、複数の搬送波、複数の赤外線信号、複数のデジタル信号等)、およびその他複数を含んでよい。
【0012】
本明細書における「一実装」、「ある実装」、「一実装例」等の複数の表現は、本明細書に記載の実装は、特定の機能、構造、または特性を含み得るが、各実施形態は必ずしも当該特定の機能、構造、特性を含まなくてよいことを示す。さらに、そのような複数の表現は、必ずしも同一の実装を言及しない。さらに、ある実施形態に関連して、特定の機能、構造、または特性が記載されている場合、本明細書で明示に記載されてようが、されまいが、他の複数の実装に関連してそのような機能、構造、または特性を達成することは、当業者の知識の範囲内であると想定されている。
【0013】
本明細書で使用される、「コーダ」という用語は、エンコーダおよび/またはデコーダを指してよい。同様に、本明細書で使用される、「コーディング」という用語は、エンコーダを介してビデオエンコーディングを実行することおよび/またはデコーダを介してビデオデコーディングを実行することを指してよい。例えば、ビデオエンコーダおよびビデオデコーダは両方とも、ビデオデータをコーディング可能な複数のコーダの例であってよい。また、本明細書で使用される、「コーデック」という用語は、任意の処理、プログラムまたは例えば、エンコーダおよび/またはデコーダを実装可能なソフトウェア、ファームウェア、および/またはハードウェアの任意の組み合わせ等の一連の動作を指してよい。さらに、本明細書で使用される、「ビデオデータ」という語句は、例えば、複数のビデオフレーム、イメージデータ、エンコードされたビットストリームデータ等のビデオコーディングに関連付けられた任意のタイプのデータを指してよい。
【0014】
複数のシステム、装置、物品、および複数の方法が、高効率な次世代ビデオコーディングのための量子化による、コンテンツ適応ビットレートおよび品質管理に関連して以下に記載される。
【0015】
上述のように、良好な進歩を遂げているものの、複数のデバイスへの実装にあたり十分実用的でありつつ、圧縮効率の最大化のためにHEVC規格が不十分である可能性のある原因については複数の理由がある。具体的には、ビデオエンコーダは、レートコントローラ(RC)またはビットレートコントローラ(BRC)を有しているが、それらが改善の余地がある。場合によっては、ビデオエンコーダのこのコンポーネントは、スタンドアロンである一方で、レートのひずみを含むエンコーディングの多くの態様を管理し、かつ、固定ビットレート(CBR)コーディングが有効なときの全体のビットレートを管理し得る、エンコードコントローラと呼ばれる、より大きなコンポーネントの一部である場合もある。
【0016】
H.264/AVCビデオコーディングに関連して使用される、典型的なレートコントローラまたはビットレートコントローラ(エンコードコントローラの複数のコンポーネント)は、非常に限定的である。というのは、当該規格は、HEVCまたは本明細書で開示されるものと同程度にビットレート効率が高くないからである。ある規格の洗練された複数の実装が利用可能になると、ある規格専用の優れたレートコントローラが利用可能になることが典型的であるため、かつ、HEVCは比較的新しいため、複数の優れたレートコントローラを有しているHEVCエンコーダ実装は多くない。複数の最先端規格のおよび今後現れるH.264等のHEVC規格に関する上記複数の限定は、本明細書に記載の新規かつ革新的なレートコントローラによって対処され、NGVの文脈において適用されるが、HEVCエンコーディングにも適用可能である。
【0017】
NGVビデオコーディングは、複数の規格ベースの複数のアプローチとは異なる。というのは、NGVビデオコーディングは、より高い圧縮を実現すべく、ビデオコーディング処理に、有意義なコンテンツベースの適応能力を自然に組み込むからである。これに対し、複数の規格ベースのビデオコーディングアプローチは通常、複数のレガシアプローチの複数の適応および微調整によって、複数のより高いゲインを圧迫する傾向がある。例えば、あらゆる規格ベースのアプローチは、複数のゲインを実現すべく、複数の予測差分を減少するための主要な手段として、動き補償されたフレーム間コーディングの適用およびさらなる微調整に過度に依存する。一方で、NGVは、動きによる複数のフレーム間差分の使用に加え、典型的な複数のビデオシーンに自然に存在する、他の複数のタイプの複数のフレーム間差分(ゲイン、ブラー、レジストレーション)も使用する。
【0018】
従って、エンコーダコントローラは、一例の形態において、フレーム間で量子化パラメータQp(量子化(quantizer)とも言う)を変える量子化アダプタおよびレートコントロールを有してよい。また、量子化アダプタおよびレートコントロールが上記処理を行うのは、フレームシーケンス上の、ピラミッド若しくは階層的参照フレームの依存関係構造上のフレームレベル(本明細書においてランクとも言う)に基づいて行う。フレームシーケンスとは、ピクチャグループ(GOP)、ビデオ、シーンであってよく、またはそれらの一部であってよく、あるいは他の任意のフレームシーケンスであってよい。この方法およびシステムは、複数の高品質なイメージを犠牲にすることなく、高い圧縮を取得する。この量子化構成は、バッファの充填量またはステータスにより、Qpを変調すべく、バッファコントロールおよびバッファモデルを使用する、1パスの固定ビットレート(CBR)レートコントロールシステム内で実行可能である。一例として、そのようなバッファは、デコーダバッファのサイズおよび動作を模倣するエンコーダにおける仮想バッファであってよい。あるいは、2パス(またはマルチパス)可変ビットレート(VBR)システムが使用されてよい。2パス可変ビットレートシステムとは、どのフレームがより複雑(または特別な注意が必要)で、どのフレームがより多くの詳細を必要とする可能性があるかを判断すべく、フレームシーケンス上で第1のパス分析を実行する。その後、2パス可変ビットレートシステムは、第1のパス分析に照らし、より効率的なコーディングのために、複数のフレームのQpを変更する少なくとも第2のパス分析を実行する。この代替手段は、フレームシーケンスを2回分析する十分な時間があるときに、使用されてよい。例えば、複数の非ライブ(あるいは非リアルタイム)メディアフォーマットとの場合などである。ルックアヘッドを持つ、1パスのVBRレートコントロールと呼ばれる第3のシステムは、フレームの複雑度を判断するに先立ち、完全な第1のパス分析を実行する代わりに、システムが単に特定数のフレームを検索するという妥協案を提供する。これらの技法およびシステムを以下に説明する。
【0019】
詳細について図1を参照するに、図1は、本開示の少なくとも一部の実装に従って配置された次世代ビデオエンコーダ100の一例の説明図である。図示の通り、エンコーダ100は入力ビデオ101を受信してよい。入力ビデオ101は、例えばビデオシーケンスの複数の入力フレーム等をエンコーディングするための任意の好適な入力ビデオを含んでよい。図示の通り、入力ビデオ101はコンテンツプレアナライザモジュール102を介して受信されてよい。コンテンツプレアナライザモジュール102は、ビデオコーディングの効率および速度性能を向上させるために、様々なタイプのパラメータを判断すべく、入力ビデオ101の複数のビデオフレームのコンテンツの分析を実行するよう構成されてよい。例えば、コンテンツプレアナライザモジュール102は、水平勾配情報および鉛直勾配情報(例えば、Rs、Cs)、分散、ピクチャ毎の空間複雑度、ピクチャ毎ごとの時間的な複雑度、シーンの変更検出、動き範囲推定、ゲイン検出、予測距離推定、オブジェクト推定の数、領域境界検出、空間複雑度マップ計算、フォーカス推定、フィルム粒子推定等を判断してよい。コンテンツプレアナライザモジュール102によって生成される複数のパラメータは、エンコーダ100(例えば、エンコードコントローラ103を介して)によって使用され、および/または量子化され、デコーダに通信されてよい。図示の通り、複数のビデオフレームおよび/または他のデータは、コンテンツプレアナライザモジュール102から適応ピクチャオーガナイザモジュール104に送信されてよい。適応ピクチャオーガナイザモジュール104は、各ビデオフレームのピクチャタイプ(例えば、I‐、P‐、またはF/Bピクチャ)を判断し、必要に応じて、当該複数のビデオフレームの順序を変えてよい。いくつかの例において、適応ピクチャオーガナイザモジュール104は、複数のフレーム部分を生成すべく構成されたフレーム部分ジェネレータを含んでよい。いくつかの例において、コンテンツプレアナライザモジュール102および適応ピクチャオーガナイザモジュール104を合わせて、エンコーダ100のプレアナライザサブシステムと考えられてよい。
【0020】
図示の通り、複数のビデオフレームおよび/または他のデータは、適応ピクチャオーガナイザモジュール104から、予測パーティション生成モジュール105へと送信されてよい。いくつかの例において、予測パーティション生成モジュール105は、フレームまたはピクチャを複数のタイルまたは複数のスーパーフラグメント等に分割してよい。いくつかの例において、フレームまたはピクチャを複数のタイルまたは複数のスーパーフラグメントへ分割するための追加モジュール(例えばモジュール104および105との間)が提供されてよい。予測パーティション生成モジュール105は、各タイルまたはスーパーフラグメントを複数の潜在的予測パーティショニングまたは複数のパーティションに分割してよい。いくつかの例において、複数の潜在的予測パーティショニングは、k−d木パーティショニング技術、二分木パーティショニング技術等のパーティショニング技術を使用して判断されてよい。k−d木パーティショニング技術および二分木パーティショニング技術は、複数の個別のビデオフレームのピクチャタイプ(I‐、P‐、またはF/Bピクチャ)、分割されるフレーム部分の特性等に基づいて判断され得る。いくつかの例において、判断された複数の潜在的予測パーティショニングは、予測のための複数のパーティション(インター予測またはイントラ予測)であってよく、また、判断された複数の潜在的予測パーティショニングは、複数の予測パーティションまたは複数の予測ブロック等として表現されてよい。
【0021】
いくつかの例において、選択された予測パーティショニング(複数の予測パーティション)は、複数の潜在的予測パーティショニングから判断されてよい。例えば、選択された予測パーティショニングは、各潜在的予測パーティショニングに対し、複数の特性および複数の動きベースのマルチ参照予測または複数のイントラ予測を使用する複数の予測の判断、および複数の予測パラメータの判断に基づいてよい。各潜在的予測パーティショニングに対し、潜在的予測エラーは、複数の元のピクセルと複数の予測ピクセルとの差分を取ることで判断されてよく、選択された予測パーティショニングは、最小の予測エラーを有する潜在的予測パーティショニングであってよい。他の複数の例において、選択された予測パーティショニングは、パーティショニングをコーディングするためのビット数に基づく重み付けスコア法を含むレート歪み最適化、および予測パーティショニングに関連付けられた予測エラーに基づいて判断されてよい。
【0022】
図示の通り、選択された予測パーティショニング(現在のフレームの複数の予測パーティション等)の複数の元のピクセルは、ディフェレンサ106において、複数の予測されたパーティション(参照フレームまたは複数のフレームおよびインター予測データまたはイントラ予測データ等の他の予測データに基づく、現在のフレームの予測パーティションの予測等)を用いて差分を取られてよい。複数の予測されたパーティションの判断について、以下にさらに詳しく記載する。複数の予測されたパーティションの判断は図1に示される通り、デコードループ135を含んでよい。差分からの任意の残留物または残留データ(パーティション予測エラーデータ等)は、コーディングパーティションジェネレータモジュール107に送信されてよい。いくつかの例において、任意のピクチャタイプ(I‐、F/B‐またはP‐ピクチャ)における複数の予測パーティションのイントラ予測等については、コーディングパーティションジェネレータモジュール107は、スイッチ107aおよび107bを介して迂回されてよい。そのような複数の例においては、単一レベルのパーティショニングのみが実行されてよい。そのようなパーティショニングは、予測パーティショニング(前述の通り)またはコーディングパーティショニングあるいはそれら両方として表現されてよい。様々な例において、そのようなパーティショニングは、予測パーティション生成モジュール105(前述の通り)を介して実行されてよく、あるいは本明細書にさらに詳細に記載される通り、そのようなパーティショニングは、コーディングパーティションジェネレータモジュール107を介して実装される、k‐d木イントラ予測/コーディングパーティショナモジュールまたは二分木イントラ予測/コーディングパーティショナモジュールを介して実行されてよい。
【0023】
いくつかの例において、パーティション予測エラーデータが存在したとしても、パーティション予測エラーデータは、エンコーディングを保証するには十分でない可能性がある。パーティション予測エラーデータをエンコードすることが望ましい可能性があり、かつ、パーティション予測エラーデータがインター予測等に関連付けられているような他の複数の例においては、コーディングパーティションジェネレータモジュール107は、複数の予測パーティションの複数のコーディングパーティションを判断してよい。いくつかの例において、コーディングパーティションジェネレータモジュール107は、必要とされない可能性がある。というのは、パーティションは、コーディングパーティショニングなし(図示の通り、スイッチ107aおよび107bを介して利用可能な迂回を経由して)でエンコードされ得るからである。コーディングパーティショニングがある場合もない場合も、複数の残留物または残留データがエンコーディングを必要とする場合、パーティション予測エラーデータ(いずれかの場合において、以降、複数のコーディングパーティションとして表現され得る)が適応変換モジュール108に送信されてよい。いくつかの例において、予測パーティション生成モジュール105およびコーディングパーティションジェネレータモジュール107を合わせて、エンコーダ100のパーティショナサブシステムとして考えられてよい。様々な例において、コーディングパーティションジェネレータモジュール107は、パーティション予測エラーデータ、元のピクセルデータ、残留データ、またはウェーブレットデータにおいて動作してよい。
【0024】
コーディングパーティションジェネレータモジュール107は、二分木パーティショニング技術および/またはk−d木パーティショニング技術等を使用し、例えば、パーティション予測エラーデータの複数の潜在的コーディングパーティショニング(複数のコーディングパーティション等)を生成してよい。いくつかの例において、複数の潜在的コーディングパーティションは、適応変換モジュール108を介して、様々なブロックサイズで、複数の適応変換または固定変換を使用して変換されてよく、また、選択されたコーディングパーティショニングおよび選択された複数の変換(適応または固定等)は、レート歪み最適化または他の基準に基づいて判断されてよい。いくつかの例において、選択されたコーディングパーティショニングおよび/または選択された変換は、コーディングパーティションのサイズ等に基づく所定の選択方法に基づいて判断されてよい。
【0025】
例えば、適応変換モジュール108は、小中ブロックサイズに対する、ローカルに最適な変換コーディングを可能にすべく、パラメトリック変換を実行するための第1の部分またはコンポーネントを含んでよい。また、適応変換モジュール108は、複数のパラメトリック変換を含む、様々な変換のうち、離散コサイン変換(DCT)またはピクチャベースの変換等の固定変換を使用する、全体的に安定した、低オーバヘッドの変換コーディングを実行するための第2の部分またはコンポーネントを含んでよい。あるいは適応変換モジュール108は、本明細書で後述される任意の他の構成を含んでよい。いくつかの例において、ローカルに最適な変換コーディングについては、本明細書で後述されるパラメトリックハール変換(PHT)が実行されてよい。いくつかの例において、複数の変換が、約4×4ピクセルから64×64ピクセルまでの矩形のサイズの複数の2Dブロックに対し、行われてよい。その場合、実際のサイズは、変換されたデータがルマまたはクロマであるか、インターまたはイントラであるか、あるいは用いられる判断された変換はPHTまたはDCTであるか、といった多くの要因により決まる。
【0026】
図示の通り、複数の結果として得られる変換係数は、適応量子化モジュール109に送信されてよい。適応量子化モジュール109は、複数の結果として得られる変換係数を量子化してよい。さらに、パラメトリック変換に関連付けられる任意のデータが、必要に応じて、適応量子化モジュール109(量子化が所望される場合)または適応エントロピーエンコーダモジュール110のいずれかに送信されてよい。また、図1に示す通り、複数の量子化された係数がスキャンされ、適応エントロピーエンコーダモジュール110に送信されてよい。適応エントロピーエンコーダモジュール110は、複数の量子化された係数をエントロピーエンコードしてよく、それらを出力ビットストリーム111に含めてよい。いくつかの例において、適応変換モジュール108および適応量子化モジュール109を合わせて、エンコーダ100の変換エンコーダサブシステムと考えられてよい。エンコードコントローラ103は、量子化情報セット(qs)を判断し、適応量子化モジュール109に提供すべく、量子化アダプタおよびレートコントロール400または500を有してよい。量子化アダプタおよびレートコントロール400または500は、後に詳述される量子化または複数の量子化パラメータ、および複数の量子化マトリックス(QM)選択肢を含んでよい。
【0027】
また図1に示す通り、エンコーダ100はローカルデコードループ135を含む。ローカルデコードループ135は、適応逆量子化モジュール112において開始されてよい。適応逆量子化モジュール112は、適応量子化モジュール109の反対の動作を実行すべく構成されてよく、その結果、逆スキャンが実行され得、複数の変換係数を判断すべく、複数の量子化された係数がデスケールされ得る。そのような適応量子化動作は、例えば非可逆であってよい。図示の通り、複数の変換係数が適応逆変換モジュール113に送信されてよい。適応逆変換モジュール113は、例えば、複数の残留物若しくは複数の残留値または複数のコーディングパーティションに関連付けられたパーティション予測エラーデータ(または前述の元のデータ若しくはウェーブレットデータ)を生成すべく、適応変換モジュール108によって実行されるのと同様の逆変換を実行してよい。いくつかの例において、適応逆量子化モジュール112および適応逆変換モジュール113を合わせて、エンコーダ100の変換デコーダサブシステムと考えられてよい。
【0028】
図示の通り、パーティション予測エラーデータ(または同様のもの)が、オプションのコーデイングパーティションアセンブラ114に送信されてよい。コーデイングパーティションアセンブラ114は、予測エラーデータの複数の予測パーティション若しくは複数のデコードされた残留予測パーティション等を生成すべく、必要に応じて、複数のデコードされた予測パーティションに複数のコーディングパーティションをアセンブルしてよい(図示の通り、いくつかの例においては、コーデイングパーティションアセンブラ114は、スイッチ114aおよび114bを介してスキップされてよく、その場合は、複数のデコードされた予測パーティションは適応逆変換モジュール113において生成されたであろう)。
【0029】
図示の通り、複数の再構成された予測パーティションを生成すべく、複数のデコードされた残留予測パーティションが、追加115における複数の予測されたパーティション(予測ピクセルデータ等)に追加されてよい。複数の再構成された予測パーティションは、予測パーティションアセンブラ116に送信されてよい。予測パーティションアセンブラ116は、複数の再構成されたタイルまたは複数のスーパーフラグメントを生成すべく、複数の再構成された予測パーティションをアセンブルしてよい。いくつかの例において、コーディングパーティションアセンブラモジュール114および予測パーティションアセンブラモジュール116を合わせて、エンコーダ100のアンパーティショナサブシステムと考えられてよい。
【0030】
複数の再構成されたタイル若しくはスーパーフラグメントは、ブロックノイズアナライザおよびデブロックフィルタリングモジュール117に送信されてよい。ブロックノイズアナライザおよびデブロックフィルタリングモジュール117は、複数の再構成されたタイル若しくはスーパーフラグメント(または複数のタイル若しくはスーパーフラグメントの複数の予測パーティション)をデブロックおよびディザリングしてよい。複数の生成されたデブロックおよびディザリングフィルタリングパラメータは、現在のフィルタ動作に使用されてよく、および/または例えば、デコーダによる使用のために出力ビットストリーム111においてコードされてよい。ブロックノイズアナライザおよびデブロックフィルタリングモジュール117の出力は、品質アナライザおよび品質復元フィルタリングモジュール118に送信されてよい。品質アナライザおよび品質復元フィルタリングモジュール118は、複数のQRフィルタリングパラメータを判断してよく(例えば、QR分解のため)、複数の判断されたパラメータをフィルタリングのために使用してよい。複数のQRフィルタリングパラメータは、デコーダによる使用のために、出力ビットストリーム111においてコードされてもよい。図示の通り、品質アナライザおよび品質復元フィルタリングモジュール118の出力は、マルチ参照フレームストレージおよびフレームセレクタ(あるいはマルチ参照コントロールまたはデコードされたピクチャバッファ若しくはストレージ)119に送信されてよい。いくつかの例において、品質アナライザおよび品質復元フィルタリングモジュール118の出力は、他の複数のフレームのコーディングにおける予測に使用され得る、最終的な再構成されたフレームであってよい(例えば、最終的な再構成されたフレームは参照フレーム等であってよい)。いくつかの例において、ブロックノイズアナライザおよびデブロックフィルタリングモジュール117および品質アナライザおよび品質復元フィルタリングモジュール118を合わせて、エンコーダ100のフィルタリングサブシステムと考えられてよい。
【0031】
依存関係ロジックモジュール128は、複数の参照フレーム、および複数のフレームの依存関係、具体的には複数のパーティションの依存関係といった複数のフレーム間の関係、をリストするためのインデックスを提供してよい。これは、マルチ参照コントロール119による複数のフレームに対する適切な順序付けおよび使用、並びに特定の複数のフレームが別のフレームの予測に選択される場合のためのものである。これには、マルチ参照予測、チェーン予測、複数の階層構造、および/または他の複数の予測技術等の複数のピクチャグループ構造のための依存関係ロジックの提供が含まれてよい。
【0032】
エンコーダ100において、複数の予測動作はインター予測および/またはイントラ予測を含んでよい。図1に示す通り、インター予測は、1または複数のモジュールによって実行されてよい。1または複数のモジュールには、モーフィングアナライザおよびモーフィングされたピクチャ生成およびバッファモジュール120(またはインループモーフィング生成モジュール)、合成アナライザおよび合成されたピクチャ生成およびバッファモジュール121(またはインループ合成生成モジュール)、複数の特性および動きフィルタリング予測モジュール123、モーフィングアナライザおよび生成モジュール(またはアウトオブループモーフィングアナライザモジュール)130、および合成アナライザおよび生成モジュール(またはアウトオブループ合成アナライザモジュール)132が含まれる。ここで、モーフィングおよび合成ジェネレータ120および121は、インループ(エンコーダのデコーダループの内側)として考えられ、モーフィングおよび合成アナライザ130および132は、アウトオブループ(エンコーダにおけるデコーダループの外側)として考えられる。ひとつはアナライザ、もうひとつはジェネレータと呼ばれる一方で、インループおよびアウトオブループの両方のモジュールは、複数の同一または同様のタスク(モーフィングおよび/または合成のための複数の修正されたフレームおよび複数の修正パラメータの形成)を実行してよいことに留意されたい。これらのコンポーネントを使用し、モーフィング生成モジュール120、またはモーフィングアナライザ130は、様々な形態のモーフィングを許容してよく、また現在のピクチャを分析し、複数のモーフィングパラメータを判断してよい。これら複数のモーフィングパラメータは、現在のピクチャがコードされるのに用いられる参照フレーム若しくは複数のフレームに対するものであり、かつ、動き補償された予測に先立つものであり、(1)ゲインの複数の変更、(2)ドミナント(またはグローバル)動きの複数の変更、(3)レジストレーションの複数の変更、および/または(4)ブラーの複数の変更のためのものである。
【0033】
アウトオブループモーフィングアナライザ130および合成アナライザ132は、適応ピクチャオーガナイザ104からピクチャグループ構造データを受信し、エンコーダコントローラ103と通信して、非量子化の、デコードされていない元のフレームデータに基づき、複数のモーフィングおよび合成パラメータ(mop、syp)および複数の修正された参照フレームを形成する。アウトオブループモーフィング130および合成アナライザ132からの複数の修正された参照フレームおよび複数の修正パラメータの形成は、デコーダループ135から提供されるものより、はるかに高速であってよく、これはリアルタイムエンコーディングにおいて特に有利である。しかしながら、デコーダ等により別の場所で補償を実行すべく、複数の修正されたフレームおよびパラメータを使用することは、エンコーダのデコーディングループ側で、インループモーフィングジェネレータ120および合成ジェネレータ121によって行われるべきである。それにより、デコーダにおける複数のフレームの再構築の際、現在の補償が反復され得る。よって、複数の修正された参照フレームを形成すべく、かつ複数の動きベクトルを計算する動き推定122による動き推定のために、アウトオブループアナライザ130および132からの結果的に得られる複数の修正パラメータは、インループモーフィング120および合成ジェネレータ121によって使用される。よって、計算されたモーフィングパラメータおよび合成パラメータ(mopとsyp)が量子化/逆量子化および使用され(例えば、合成生成モジュール120によって)、現在のフレームの効率的な動き(および複数の特性)補償された予測のために、複数の動きベクトルを計算する動き推定モジュール122によって使用され得る、複数のモーフィングされた参照フレームを生成してよい。合成生成モジュール121は、複数の超解像技術(SR)ピクチャ、複数の予想された補間(PI)ピクチャを含む、いくつかのタイプの合成されたフレームを使用する。中でも、動き補償された予測は、これらのフレーム内での効率的な動き補償された予測のために複数の動きベクトルを判断することによって、はるかに高いゲインをもたらし得る。モーフィングまたは合成を実行する、いくつかの例の詳細について以下記載する。
【0034】
動き推定モジュール122は、現在のフレームとともに、モーフィングされた参照フレームおよび/または複数の超解像技術(SR)ピクチャおよび複数の予想された補間ピクチャ(PI)に基づき、動きベクトルデータを生成してよい。いくつかの例において、動き推定モジュール122はインター予測モジュールと考えられてよい。例えば、動きベクトルデータは、インター予測のために使用されてよい。インター予測が適用される場合、複数の特性および動き補償されたフィルタリング予測モジュール123は、前述のローカルデコードループの一部として動き補償を適用してよい。
【0035】
イントラ予測は、イントラ方向予測アナライザおよび予測生成モジュール124によって実行されてよい。イントラ方向予測アナライザおよび予測生成モジュール124は、空間方向性予測を実行するよう構成されてよく、また複数のデコードされた隣接パーティションを使用してよい。いくつかの例において、方向の判断および予測の生成の両方がイントラ方向予測アナライザおよび予測生成モジュール124によって実行されてよい。いくつかの例において、イントラ方向予測アナライザおよび予測生成モジュール124は、イントラ予測モジュールと考えられてよい。
【0036】
図1に示す通り、予測モードおよび参照タイプアナライザモジュール125は、タイルの各予測パーティション(またはスーパーフラグメント)のために、「スキップ」、「オート」、「インター」、「スプリット」、「マルチ」、および「イントラ」からの複数の予測モードの選択を許容してよい。これらすべてを、P‐ピクチャおよびF/B‐ピクチャに対し適用してよい。複数の予測モードに加えて、予測モードおよび参照タイプアナライザモジュール125は、複数のP‐ピクチャおよびF/B‐ピクチャのほかに、「インター」モードまたは「マルチ」モードによって異なり得る、複数の参照タイプの選択も許容できる。予測モードおよび参照タイプアナライザモジュール125の出力における予測信号は、予測アナライザおよび予測フュージョンフィルタリングモジュール126によって、フィルタリングされてよい。予測アナライザおよび予測フュージョンフィルタリングモジュール126は、フィルタリングに使用する複数のパラメータ(複数のフィルタリング係数、頻度、オーバヘッド等)を判断してよく、かつ、フィルタリングを実行してよい。いくつかの例において、予測信号のフィルタリングは、異なる複数のモード(イントラ、インター、マルチ、スプリット、スキップ、およびオート等)を示す、様々なタイプの信号をフューズしてよい。いくつかの例において、複数のイントラ予測信号は、適切なフィルタリングによってコーディング効率が大幅に強化されるように、インター予測信号のあらゆる他のタイプと異なってよい。いくつかの例において、複数のフィルタリングパラメータは、デコーダによる使用のために、出力ビットストリーム111においてエンコードされてもよい。フィルタリングされた予測信号は、上述のように、ディフェレンサ106に対し、第2の入力(予測パーティション等)を提供してよい。ディフェレンサ106は、前述のように、コーディングのための予測差分信号(パーティション予測エラー等)を判断してよい。さらに、同一のフィルタリングされた予測信号は、また前述のように、追加115に対し、第2の入力を提供してよい。前述の通り、出力ビットストリーム111は、ビデオ表示のために、デコーダによって使用される効率的にエンコードされたビットストリームを提供してよい。
【0037】
動作時において、エンコーダ100の一部のコンポーネントは、エンコーダ予測サブシステムとして動作してよい。例えば、エンコーダ100のそのようなエンコーダ予測サブシステムは、マルチ参照フレームストレージおよびフレームセレクタ119、インループモーフィングアナライザおよび生成モジュール120、インループ合成アナライザおよび生成モジュール121、動き推定モジュール122、および/または複数の特性および動き補償された精度適応フィルタリング予測モジュール123、並びにアウトオブループモーフィングアナライザ130および合成アナライザ132を含んでよい。
【0038】
一部の実装において、エンコーダ100のそのようなエンコーダ予測サブシステムは、効率的なビデオコーディングアルゴリズム内に、多数のコンポーネントおよびこれらのコンポーネントによって生成された、複数の組み合わせられた予測を組み込んでよい。例えば、提案されるNGVコーダの実装は、次の機能のうち1または複数のものを含んでよい。1.ゲイン補償(例えば、シーン内のゲイン/明度における複数の変更に対する明示の補償)。2.ブラー補償:シーン内のブラー/鮮明さにおける複数の変更に対する明示の補償。3.ドミナント/グローバな動き補償(例えば、シーン内のドミナント(主要な)動きに対する明示の補償)。4.レジストレーション補償(例えば、シーン内の複数のレジストレーション不一致に対する明示の補償)。5.超解像技術(例えば、シーン内の解像度の精度における複数の変更に対する明示のモデル)。6.予想(例えば、シーン内の動き軌道における複数の変更に対する明示のモデル)等、および/またはこれらの組み合わせ。
【0039】
図1は、ビデオエンコーダ100の動作に関連付けられた、複数の例示的なコントロール信号を示す。ここでは、以下の複数の略語によって、関連情報を示すことができる。
scnchg:シーンの変更情報
spcpx:空間の複雑度情報
tpcpx:時間的な複雑度情報
pdist:時間的な予測距離情報
pap:複数の事前分析パラメータ(scnchg、 spcpx、tpcpx、pdist以外のあらゆる他の事前分析パラメータのためのプレースホルダ)
ptyp:複数のピクチャタイプの情報
pgst:ピクチャグループ構造情報
pptn cand:複数の予測パーティショニング候補
cptn cand:複数のコーディングパーティショニング候補
prp:前処理
xmtyp:変換タイプ情報
xmdir:変換方向情報
xmmod:変換モード
ethp:1/8のピクセル動き予測
pptn:予測パーティショニング
cptn:コーディングパーティショニング
mot&cod cost:動きおよびコーディングコスト
qs:量子化情報セット(量子化パラメータ(Qp)、量子化マトリックス(QM)選択肢を含む)
mv:複数の動きベクトル
mop:複数のモーフィングパラメータ
syp:複数の合成パラメータ
ddi:デブロックおよびディザリング情報
qri:品質復元フィルタリングインデックス/情報
api:適応精度フィルタリングインデックス/情報
fii:フュージョンフィルタリングインデックス/情報
mod:モード情報
reftyp:参照タイプ情報
idir:イントラ予測方向
【0040】
デコーダに送信される必要のあるpgst、ptyp、prp、pptn、cptn、modes、reftype、 ethp、xmtyp、xmdir、xmmod、idir、mv、qs、mop、syp、ddi、qri、api、fiiといった様々な信号およびデータアイテム、複数の量子化係数および他の複数のものが、適応エントロピーエンコーダ110によって、エントロピーエンコーディングされてよい。ここで、適応エントロピーエンコーダ110は、エントロピーエンコーダサブシステムとまとめて呼ばれる様々なエントロピーコーダを含んでよい。図1において、これらのコントロール信号は、エンコーダ100に係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、他の複数の実装は、エンコーダ300の複数の機能モジュールにわたる、複数のコントロール信号の異なる配置を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に係る複数のコントロール信号の実装は、図示された複数の特定の例示的コントロール信号のサブセットのみのタスク、複数の追加の制御信号のタスクを、および/または図示されたものとは異なる配置において含んでよい。
【0041】
図2は、本開示の少なくとも一部の実装に従って配置された、例示的な次世代ビデオデコーダ200の例示的な図である。図示の通り、デコーダ200は、入力ビットストリーム201を受信してよい。いくつかの例において、入力ビットストリーム201は、エンコーダ100を介して、および/または本明細書に記載の複数のエンコーディング技術を介してエンコードされてよい。図示の通り、入力ビットストリーム201は、適応エントロピーデコーダモジュール202によって受信されてよい。適応エントロピーデコーダモジュール202は、様々なタイプのエンコードされたデータ(例えば、オーバヘッド、複数の動きベクトル、複数の変換係数等)をデコードしてよい。いくつかの例において、適応エントロピーデコーダ202は、可変長デコーディング技術を使用してよい。いくつかの例において、適応エントロピーデコーダ202は、前述の適応エントロピーエンコーダモジュール110と逆の動作を実行してよい。
【0042】
デコードされたデータは、適応逆量子化モジュール203に送信されてよい。適応逆量子化モジュール203は、複数の変換係数を判断すべく、複数の量子化係数を逆スキャンおよびデスケーリングするよう構成されてよい。そのような適応量子化の動作は、例えば非可逆であってよい。いくつかの例において、適応逆量子化モジュール203は、適応量子化モジュール109と反対の動作(例えば、適応逆量子化モジュール112とほぼ同一の複数の動作)を実行するよう構成されてよい。図示の通り、複数の変換係数(および、いくつかの例において、パラメトリック変換で使用されるための変換データ)は、適応逆変換モジュール204に送信されてよい。適応逆変換モジュール204は、複数の残留物若しくは複数の残留値または複数のコーディングパーティションに関連付けられたパーティション予測エラーデータ(または元のデータ若しくはウェーブレットデータ)を生成すべく、複数の変換係数に対し、逆変換を実行してよい。いくつかの例において、適応逆変換モジュール204は、適応変換モジュール108とは、反対の動作(適応逆変換モジュール113とほぼ同一の複数の動作)を実行すべく構成されてよい。いくつかの例において、適応逆変換モジュール204は、例えば、複数のデコードされた隣接パーティション等の以前にデコードされた他のデータに基づいて、逆変換を実行してよい。いくつかの例において、適応逆量子化モジュール203および適応逆変換モジュール204は合わせて、デコーダ200の変換デコーダサブシステムとして考えられてよい。
【0043】
図示の通り、複数の残留物若しくは複数の残留値またはパーティション予測エラーデータは、コーデイングパーティションアセンブラ205に送信されてよい。コーデイングパーティションアセンブラ205は、必要に応じて、複数のデコードされた予測パーティションに複数のコーディングパーティションをアセンブルしてよい(図示の通り、いくつかの例においては、コーデイングパーティションアセンブラ205は、スイッチ205aおよび205bを介してスキップされてよく、その場合は、複数のデコードされた予測パーティションは適応逆変換モジュール204において生成されたであろう)。複数の再構成された予測パーティションを生成すべく、予測エラーデータの複数のデコードされた予測パーティション(例えば、複数の予測パーティション残留)が、追加206における複数の予測されたパーティション(予測ピクセルデータ等)に追加されてよい。複数の再構成された予測パーティションは、予測パーティションアセンブラ207に送信されてよい。予測パーティションアセンブラ207は、複数の再構成されたタイル若しくはスーパーフラグメントを生成すべく、複数の再構成された予測パーティションをアセンブルしてよい。いくつかの例において、コーディングパーティションアセンブラモジュール205および予測パーティションアセンブラモジュール207を合わせて、デコーダ200のアンパーティショナサブシステムと考えられてよい。
【0044】
複数の再構成されたタイル若しくはスーパーフラグメントは、デブロックフィルタリングモジュール208に送信されてよい。デブロックフィルタリングモジュール208は、複数の再構成されたタイル若しくはスーパーフラグメント(または複数のタイル若しくはスーパーフラグメントの複数の予測パーティション)をデブロックおよびディザリングしてよい。生成されたデブロックおよびディザリングフィルタリングパラメータは、例えば入力ビットストリーム201から判断されてよい。デブロックフィルタリングモジュール208の出力は、品質復元フィルタリングモジュール209に送信されてよい。品質復元フィルタリングモジュール209は、複数のQRパラメータに基づいて品質フィルタリングを適用してよく、複数のQRパラメータは、例えば入力ビットストリーム201から判断されてよい。いくつかの例において、デブロックフィルタリングモジュール208および品質復元フィルタリングモジュール209を合わせて、デコーダ200のフィルタリングサブシステムとして考えられてよい。
【0045】
図2に示す通り、品質復元フィルタリングモジュール209の出力は、複数の最終的なレコンフレームであってよく、マルチ参照フレームストレージおよびフレームセレクタ(デコードされたピクチャバッファとも呼ばれる)210内に保存されてよい。品質復元フィルタリングモジュール209の出力が使用され(またはモーフィングされ)、適用される、複数のデコードされたmopパラメータに従い、複数のモーフィングされたピクチャ/ローカルバッファ(モーフィングされたピクチャジェネレータおよびバッファ211において)を作成する。同様に、合成されたピクチャおよび複数のローカルバッファ(合成されたピクチャ生成およびバッファ212において)が、複数のデコードされたsypパラメータを、マルチ参照フレームストレージおよびフレームセレクタ210(換言すれば、ストレージまたはバッファ210内の複数の再構成されたフレーム)に適用することで、作成される。依存関係ロジック220は、マルチ参照フレームストレージ210内の複数の格納されたフレームのためのインデックスを保持してよく、またそのインデックス付けを実行してよい。インデックス付けは、複数のマルチ参照フレーム、チェーン予測および/または複数の階層(またはピラミッド)フレーム構造および/または後述する他の複数の技術といった、複数の予測技術に使用されてよい。モーフィングおよび合成された複数のフレームは、動き補償された予測に使用される。ここで、動き補償された予測は、複数のapiパラメータに基づく適応精度(AP)フィルタリングを使用し、デコードされたethp信号により、1/4または1/8のいずれかのピクセル予測を維持する。
【0046】
前述の通り、複数の予測動作による補償は、インター予測補償および/またはイントラ予測補償を含んでよい。図示の通り、インター予測補償は、モーフィングされたピクチャ生成およびバッファモジュール211、合成されたピクチャ生成およびバッファモジュール212、および複数の特性および動き補償されたフィルタリング予測モジュール213を含む、1または複数のモジュールによって実行されてよい。モーフィング生成モジュール211は、複数のモーフィングされた参照フレームを生成すべく、複数の逆量子化されたモーフィングパラメータ(例えば、入力ビットストリーム201から判断された)を使用してよい。合成生成モジュール212は、入力ビットストリーム201から判断された複数のパラメータに基づき、複数の超解像技術(SR)ピクチャおよび複数の予想された補間(PI)ピクチャ等を生成してよい。インター予測が適用される場合、複数の特性および動き補償されたフィルタリング予測モジュール213は、入力ビットストリーム201内の受信された複数のフレームおよび動きベクトルデータ等に基づき、動き補償を適用してよい。
【0047】
イントラ予測補償は、イントラ方向予測生成モジュール214によって実行されてよい。イントラ方向予測生成モジュール214は、空間方向性予測を実行するよう構成されてよく、また、入力ビットストリーム201内のイントラ予測データに従って、複数のデコードされた隣接パーティションを使用してよい。
【0048】
図2に示す通り、予測モードセレクタモジュール215は、タイルの各予測パーティションに対し、「スキップ」、「オート」、「インター」、「マルチ」、および「イントラ」の中から、予測モード選択を判断してよい。「スキップ」、「オート」、「インター」、「マルチ」、および「イントラ」のすべては、入力ビットストリーム201内のモード選択データに基づき、複数のP‐ピクチャおよび複数のF/Bピクチャに適用してよい。複数の予測モードに加えて、予測モードセレクタモジュール215は、複数のP‐ピクチャおよびF/B‐ピクチャのほかに、「インター」モードまたは「マルチ」モードによって異なり得る、複数の参照タイプの選択も許容してよい。予測モードセレクタモジュール215の出力における予測信号は、予測フュージョンフィルタリングモジュール216によって、フィルタリングされてよい。予測フュージョンフィルタリングモジュール216は、入力ビットストリーム201を介して判断された複数のパラメータ(複数のフィルタリング係数、頻度、オーバヘッド)に基づき、フィルタリングを実行してよい。いくつかの例において、予測信号のフィルタリングは、異なる複数のモード(イントラ、インター、マルチ、スキップ、およびオート等)を示す、様々なタイプの信号をフューズしてよい。いくつかの例において、複数のイントラ予測信号は、適切なフィルタリングによってコーディング効率が大幅に強化されるように、インター予測信号のあらゆる他のタイプと異なってよい。フィルタリングされた予測信号は、上述のように、ディフェレンサ206に対し、第2の入力(予測パーティション等)を提供してよい。
【0049】
前述の通り、品質復元フィルタリングモジュール209の出力は、最終的な再構成されたフレームに送信されてよい。複数の最終的な再構成されたフレームは、適応ピクチャリオーガナイザ217に送信されてよく、適応ピクチャリオーガナイザ217は、必要に応じて、入力ビットストリーム201内の複数の順序付けパラメータに基づいて、複数のフレームを再順序付けまたは再編成してよい。再順序付けされた複数のフレームは、コンテンツポストリストアラモジュール218に送信されてよい。コンテンツポストリストアラモジュール218は、デコードされたビデオに関する知覚品質のさらなる向上を実行するよう構成された、オプションのモジュールであってよい。上記向上処理は、入力ビットストリーム201内の複数の品質向上パラメータに応答して実行されてよく、あるいはスタンドアロン動作として実行されてよい。いくつかの例において、コンテンツポストリストアラモジュール218は、例えば、フィルム粒子ノイズの推定または残留ブロックノイズ低減(デブロックフィルタリングモジュール208について記載された複数のブロッキング動作の後でさえ)といった品質を向上させるべく、複数のパラメータを適用してよい。図示の通り、デコーダ200は、ディスプレイデバイス(不図示)を介して表示するよう構成され得る、ディスプレイビデオ219を提供してよい。
【0050】
図2は、ビデオデコーダ200の動作に関連付けられた複数の例示的なコントロール信号を示す。そこでは、図1に関し前述したように、示された複数の略語は同様の情報を示し得る。図4において、これらのコントロール信号は、デコーダ200に係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、他の複数の実装は、エンコーダ100の複数の機能モジュールにわたり、複数のコントロール信号の異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に係る複数のコントロール信号の実装は、図示された複数の特定の例示的コントロール信号のサブセットのみのタスク、複数の追加の制御信号のタスクを、および/または図示されたものとは異なる配置において含んでよい。
【0051】
図1から2は、複数の特定のエンコーディングおよびデコーディングのモジュールを示す一方で、図示されていない、様々な他のコーディングモジュールまたはコンポーネントも、本開示に従って使用されてよい。さらに、本開示は、図1および2に示される複数の特定のコンポーネントおよび/または様々なコンポーネントが配置される方法に限定されない。本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および/またはハードウェアおよび/またはこれら任意の組み合わせにおいて実装されてよい。例えば、エンコーダ100および/またはデコーダ200に係る様々なコンポーネントは、例えば携帯電話等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ(SoC)のハードウェアによって少なくとも部分的に提供されてよい。
【0052】
さらに、エンコーダ100は、例えはビデオコンテンツサーバシステムを含むコンテンツプロバイダシステムに関連付けられ得く、および/またはそれによって提供され得ると認識されてよい。また、出力ビットストリーム111は、図1および2に不図示の複数のトランシーバ、複数のアンテナ、複数のネットワークシステム等の様々な通信コンポーネントおよび/またはシステムによって、例えば、デコーダ200等の複数のデコーダに、送信または伝達され得ると認識されてよい。また、デコーダ200は、コンピューティングデバイス(デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ、携帯電話等)等のクライアントシステムに関連付けられ得ると認識されてよい。ここで、クライアントシステムは、エンコーダ100に対し、リモートであり、かつ、図1および2に不図示の複数のトランシーバ、複数のアンテナ、複数のネットワークシステム等の様々な通信コンポーネントおよび/またはシステムを介して、入力ビットストリーム201を受信する。従って、様々な実装において、エンコーダ100およびデコーダサブシステム200は、一緒にあるいは互いに独立して実装されてよい。
【0053】
図3Aは、本開示の少なくとも一部の実装に従って配置された、次世代ビデオエンコーダ300aの一例に係る説明図である。図3Aは、図1に示されるものと同様のエンコーダを示し、同様の複数の要素は、簡潔さのため繰り返さない。図3Aに示す通り、エンコーダ300aは、プレアナライザサブシステム310a、パーティショナサブシステム320a、予測エンコーディングサブシステム330a、変換エンコーダサブシステム340a、フィルタリングエンコーディングサブシステム350a、エントロピーエンコーダシステム360a、変換デコーダサブシステム370a、および/またはアンパーティショナサブシステム380aを含んでよい。プレアナライザサブシステム310aは、コンテンツプレアナライザモジュール102および/または適応ピクチャオーガナイザモジュール104を含んでよい。パーティショナサブシステム320aは、予測パーティション生成モジュール105、および/またはコーディングパーティションジェネレータ107を含んでよい。予測エンコーディングサブシステム330aは、動き推定モジュール122、複数の特性および動き補償されたフィルタリング予測モジュール123、および/またはイントラ方向予測アナライザおよび予測生成モジュール124を含んでよい。変換エンコーダサブシステム340aは、適応変換モジュール108および/または適応量子化モジュール109を含んでよい。フィルタリングエンコーディングサブシステム350aは、ブロックノイズアナライザおよびデブロックフィルタリングモジュール117、品質アナライザおよび品質復元フィルタリングモジュール118、動き推定モジュール122、複数の特性および動き補償されたフィルタリング予測モジュール123、および/または予測アナライザおよび予測フュージョンフィルタリングモジュール126を含んでよい。エントロピーコーディングサブシステム360aは、適応エントロピーエンコーダモジュール110を含んでよい。変換デコーダサブシステム370aは、適応逆量子化モジュール112および/または適応逆変換モジュール113を含んでよい。アンパーティショナサブシステム380aは、コーデイングパーティションアセンブラ114および/または予測パーティションアセンブラ116を含んでよい。
【0054】
エンコーダ300aのパーティショナサブシステム320aは、次の2つのパーティショニングサブシステムを含んでよい。すなわち、予測のための分析およびパーティショニングを実行可能な、予測パーティション生成モジュール105と、コーディングのための分析およびパーティショニングを実行可能な、コーディングパーティションジェネレータモジュール107とである。別のパーティショニング方法は、複数のピクチャを複数の領域またはスライスにセグメント化できる、適応ピクチャオーガナイザ104を含んでよく、また当該別のパーティショニング方法を、このパーティショナの一部として任意で考えられてよい。
【0055】
エンコーダ300aの予測エンコーダサブシステム330aは、動き推定122および複数の特性および動き補償されたフィルタリング予測123、およびイントラ方向予測アナライザおよび予測生成モジュール124を含んでよい。動き推定122および複数の特性および動き補償されたフィルタリング予測123は、「インター」信号の分析と予測とを実行してよい。イントラ方向予測アナライザおよび予測生成モジュール124は、「イントラ」信号の分析と予測とを実行してよい。動き推定122および複数の特性および動き補償されたフィルタリング予測123は、複数の差分に係る、他の複数のソース(ゲイン、グローバル動き、レジストレーション等)を最初に補償し、次に実際の動き補償を行うことで、予測可能性の向上を可能にしてよい。また、動き推定122および複数の特性および動き補償されたフィルタリング予測123は、より優れた複数の予測を可能にし得る、複数の合成されたフレーム(超解像度、および予想)を作成するためのデータモデリングの使用後、次にそのような複数のフレーム内での実際の動き補償の使用を可能にしてよい。
【0056】
エンコーダ300aの変換エンコーダサブシステム340aは、変換のタイプおよびサイズを選択すべく、分析を実行してよく、かつ、2つの主要なタイプのコンポーネントを含んでよい。コンポーネントの第1のタイプは、小中ブロックサイズに対するローカルに最適な変換コーディングを許容すべく、パラメトリック変換の使用を許可してよい。しかしながら、そのようなコーディングは、何らかのオーバヘッドを必要とする可能性がある。コンポーネントの第2のタイプは、DCT、または複数のパラメトリック変換を含む少数の変換の選択肢からのピクチャベースの変換等、全体的または固定的な変換を使用する、全体的に安定した、低オーバヘッドのコーディングを許可してよい。ローカルに適応される変換コーディングについては、PHT(パラメトリックハール変換)が使用されてよい。複数の変換が、4×4ピクセルから64×64ピクセルまでの矩形のサイズの複数の2Dブロックに対し、行われてよい。その場合、実際のサイズは、変換されたデータがルマまたはクロマであるか、インターまたはイントラであるか、および用いられる変換はPHTまたはDCTであるか、といった多くの要因により決まり得る。結果的に得られる複数の変換係数は、量子化、スキャン、およびエントロピーコードされてよい。
【0057】
エンコーダ300aのエントロピーエンコーダサブシステム360aは、効率的であるが、低い複雑度の、多数のコンポーネントを含んでよい。これらコンポーネントの各々は、特定のタイプのデータ(様々なタイプのオーバヘッド、動きベクトル、変換係数)を効率的にコーディングするという目的を有する。このサブシステムの複数のコンポーネントは、複数の低複雑度可変長コーディング技術の一般クラスに属してよいが、効率的なコーディングのためには、各コンポーネントは、最大効率のためにカスタムで最適化されてよい。例えば、「コードされた/コードされていない」データのコーディングのためのカスタムソリューションが設計されてよい。「複数のモードおよび複数の参照タイプ」データのための別のカスタムソリューションが設計されてよい。「動きベクトル」データのためのさらなる別のカスタムソリューション、および「予測および複数のコーディングパーティション」データのためのさらなる別のカスタムソリューションが設計されてよい。最後に、エントロピーコードされるデータの大部分は、「変換係数」データであるので、複数のテーブル間で適応可能なアルゴリズムに加え、複数の特定ブロックサイズに対する効率的な処理のための複数のアプローチが使用されてよい。
【0058】
エンコーダ300aのフィルタリングエンコーダサブシステム350aは、複数のパラメータの分析並びに、これらのパラメータに基づき再構成された複数のピクチャの複数のフィルタリングを実行してよい。また、エンコーダ300aのフィルタリングエンコーダサブシステム350aは、複数のサブシステムを含んでよい。例えば、第1のサブシステムである、ブロックノイズアナライザおよびデブロックフィルタリングモジュール117は、任意の複数の潜在的ブロックコーディングアーチファクトを減少またはマスクすべく、デブロックおよびディザリングを行ってよい。第2の例示的サブシステムである、品質アナライザおよび品質復元フィルタリングモジュール118は、任意のビデオコーディング内での量子化動作に起因する複数のアーチファクトを減少させるべく、全般的な品質復元を実行してよい。第3の例示的サブシステムは、動き推定122および複数の特性および動き補償されたフィルタリング予測モジュール123を含んでよく、第3の例示的サブシステムは、コンテンツの複数の動き特性(動き速度/ブラーの程度)に適応するフィルタを使用することで、動き補償からの複数の結果を向上させてよい。第4の例示的サブシステムである、予測フュージョンアナライザおよびフィルタ生成モジュール126は、予測信号の適応フィルタリング(予測における、通常イントラ予測から生じる、複数の偽のアーチファクトを減少し得る)を許容してよく、それによりコードされる必要がある予測エラーを減少させる。
【0059】
エンコーダ300aのエンコードコントローラモジュール103は、所定の複数のリソースおよび所望されるエンコーディング速度といった複数の制約下、全体のビデオ品質を対処してよい。例えば、ショートカットを一切使用しない、フルRDO(レート歪み最適化)ベースのコーディングでは、ソフトウェアエンコーディングのエンコーディング速度は、単純に、複数のコンピューテイングリソース(プロセッサの速度、プロセッサの数、ハイパースレッディング、DDR3メモリ等)の利用可能性の結果であってよい。そのような場合、エンコードコントローラモジュール103には、複数の予測パーティションおよび複数のコーディングパーティションのありとあらゆる組み合わせが、実際のエンコーディングによって、入力されてよく、各場合において、ビットレートは再構成されたエラーとともに、複数のラグランジュ最適化式に基づいて、かつ、後述の複数の実装に従い計算されてよく、複数の予測パーティションおよび複数のコーディングパーティションのベストセットが、コードされる各フレームの各タイルに対し送信されてよい。フルRDOベースモードは、最善の圧縮効率をもたらしてよく、また最も遅いエンコーディングモードであってよい。コンテンツプレアナライザモジュール102からの複数のコンテンツ分析パラメータを使用し、これらを使って、RDO単純化(あらゆる可能性のあるケースをテストしない)を作成し、あるいはフルRDOを介して特定の割合のブロックのみを通過させることで、速度に対する品質相殺がなされ、より高速度なエンコーディングが可能になる。また、エンコードコントローラモジュール103は、後に詳述される量子化アダプタおよびレートコントロール400または500を含んでよく、量子化アダプタおよびレートコントロール400または500は、本明細書に開示された複数の実装を適用すべく、起動され得る。可変ビットレート(VBR)ベースのエンコーダ動作が記載されている一方で、追加の固定ビットレート(CBR)の制御されたコーディングが使用されてよい。
【0060】
最後に、エンコーダ300aのプレアナライザサブシステム310aは、ビデオコーディングの効率および速度性能の向上に役立つ、様々なタイプのパラメータを計算すべく、コンテンツ分析を実行してよい。例えば、プレアナライザサブシステム310aは、水平および鉛直勾配情報(Rs,Cs)、分散、ピクチャ毎の空間複雑度、ピクチャ毎ごとの時間的な複雑度、シーンの変更検出、動き範囲推定、ゲイン検出、予測距離推定、オブジェクト数推定、領域境界検出、空間複雑度マップ計算、フォーカス推定、フィルム粒子推定等を計算してよい。プレアナライザサブシステム310aによって生成される複数のパラメータは、エンコーダによって消費されるか、あるいは量子化され、デコーダ200に通信されてよい。
【0061】
図3Aにおいて、サブシステム310aから380aまでは、エンコーダ300aに係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、本明細書のエンコーダ300aの他の複数の実装は、サブシステム310aから380aまでにわたるエンコーダ300aの複数の機能モジュールの異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に記載の例示的なサブシステム310aから380aの実装は、図示されたエンコーダ300aに係る複数の特定の例示的機能モジュールのサブセットのみのタスク、複数の追加の機能モジュールのタスクを、および/または図示されたものとは異なる配置において含んでよい。
【0062】
図3Bは、本開示の少なくとも一部の実装に従って配置された、次世代ビデオデコーダ300bの一例の説明図である。図3Bは、図2に示されるものと同様のデコーダを示し、簡潔さのため、同様の複数の要素は繰り返さない。図3Bに示される通り、デコーダ300bは、予測デコーダサブシステム330b、フィルタリングデコーダサブシステム350b、エントロピーデコーダサブシステム360b、変換デコーダサブシステム370b、アンパーティショナ_2サブシステム380b、アンパーティショナ_1サブシステム351b、フィルタリングデコーダサブシステム350b、および/またはポストリストアラサブシステム390bを含んでよい。予測デコーダサブシステム330bは、複数の特性および動き補償されたフィルタリング予測モジュール213および/またはイントラ方向予測生成モジュール214を含んでよい。フィルタリングデコーダサブシステム350bは、デブロックフィルタリングモジュール208、品質復元フィルタリングモジュール209、複数の特性および動き補償されたフィルタリング予測モジュール213、および/または予測フュージョンフィルタリングモジュール216を含んでよい。エントロピーデコーダサブシステム360bは、適応エントロピーデコーダモジュール202を含んでよい。変換デコーダサブシステム370bは、適応逆量子化モジュール203および/または適応逆変換モジュール204を含んでよい。アンパーティショナ_2サブシステム380bは、コーデイングパーティションアセンブラ205を含んでよい。アンパーティショナ_1サブシステム351bは、予測パーティションアセンブラ207を含んでよい。ポストリストアラサブシステム790は、コンテンツポストリストアラモジュール218および/または適応ピクチャリオーガナイザ217を含んでよい。
【0063】
デコーダ300bのエントロピーデコードサブシステム360bは、エンコーダ300aのエントロピーエンコーダサブシステム360aと逆の動作を実行してよく、すなわち、エントロピーデコードサブシステム360bは、エントロピーエンコーダサブシステム360aによって、大まかに可変長デコーディングと呼ばれる、複数の技術のあるクラスを使用してエンコードされる、様々なデータ(複数のタイプのオーバヘッド、動きベクトル、変換係数)をデコードしてよい。特に、デコードされる様々なタイプのデータは、「コードされた/コードされていない」データ、「複数のモードおよび複数の参照タイプ」データ、「動きベクトル」データ、「予測および複数のコーディングパーティション」データ、および「変換係数」データを含んでよい。
【0064】
デコーダ300bの変換デコーダサブシステム370bは、エンコーダ300aの変換エンコーダサブシステム340aと逆の動作を実行してよい。変換デコーダサブシステム370bは、2つのタイプのコンポーネントを含んでよい。例示的コンポーネントの第1のタイプは、小中ブロックサイズに対するパラメトリック逆PHT変換の使用をサポートしてよい一方で、もう1つのタイプの例示的コンポーネントは、すべてのブロックサイズに対する逆DCT変換をサポートしてよい。ブロックに使用されるPHT変換は、複数の隣接ブロックのデコードされたデータの分析に依存してよい。出力ビットストリーム111および/または入力ビットストリーム201は、PHT変換のためのパーティション/ブロックサイズに関する情報、並びに逆変換される2Dブロックのどの方向に、PHTが使用され得るかに関する情報を伝達してよい(もう一方の方向はDCTを使用する)。DCTのみによってコードされた複数のブロックに対し、パーティション/ブロックサイズ情報も出力ビットストリーム111および/または入力ビットストリーム201から取得されてよく、また、適切なサイズの逆DCTを適用すべく、パーティション/ブロックサイズ情報が使用されてよい。
【0065】
デコーダ300bのアンパーティショナ380bは、エンコーダ300aのパーティショナサブシステム320aと逆の動作を実行してよい。また、アンパーティショナ380bは、コーディングパーティションアセンブラモジュール205および予測パーティションアセンブラモジュール207という、2つのアンパーティショニングサブシステムを含んでよい。コーディングパーティションアセンブラモジュール205は、コードされたデータのアンパーティショニングを実行してよく、予測パーティションアセンブラモジュール207は、予測のアンパーティショニングを実行してよい。さらに、複数の領域セグメント化またはスライスのために、オプションの適応ピクチャオーガナイザモジュール104が、エンコーダ300aにおいて使用される場合、適応ピクチャリオーガナイザモジュール217がデコーダにおいて必要とされてよい。
【0066】
デコーダ300bの予測デコーダサブシステム330bは、複数の特性および動き補償されたフィルタリング予測モジュール213およびイントラ方向予測生成モジュール214を含んでよい。複数の特性および動き補償されたフィルタリング予測モジュール213は、「インター」信号の予測を実行してよく、イントラ方向予測生成モジュール214は、「イントラ」信号の予測を実行してよい。複数の特性および動き補償されたフィルタリング予測モジュール213は、複数の差分の他の複数のソース(ゲイン、グローバル動き、レジストレーション等)を最初に補償し、つまり、合成された複数のフレーム(超解像度および予想)を作成し、次に実際の動き補償を行うことで、予測可能性の向上を可能にしてよい。
【0067】
デコーダ300bのフィルタリングデコーダサブシステム350bは、エンコーダ300aによって送信された複数のパラメータに基づく、複数の再構成されたピクチャに対する複数のフィルタリングを実行してよく、フィルタリングデコーダサブシステム350bは、複数のサブシステムを含んでよい。例えば、第1のサブシステムである、デブロックフィルタリングモジュール208は、任意の複数の潜在的ブロックコーディングアーチファクトを減少またはマスクすべく、デブロックおよびディザリングを行ってよい。第2の例示的サブシステムである、品質復元フィルタリングモジュール209は、任意のビデオコーディング内での量子化動作に起因する複数のアーチファクトを減少させるべく、全般的な品質復元を実行してよい。第3の例示的サブシステムである、複数の特性および動き補償されたフィルタリング予測モジュール213は、コンテンツの複数の動き特性に適応可能なフィルタを使用することで、動き補償からの複数の結果を向上させてよい(動き速度/ブラーの程度)。第4の例示的サブシステムである、予測フュージョンフィルタリングモジュール216は、予測信号の適応フィルタリング(予測における、通常イントラ予測から生じる、複数の偽のアーチファクトを減少し得る)を許容してよく、それによりコードされる必要がある予測エラーを減少させる。
【0068】
デコーダ300bのポストリストアラサブシステム390bは、デコードされるビデオの知覚品質に関するさらなる向上を実行可能な、オプションのブロックである。当該処理は、エンコーダ100によって送信される複数の品質向上パラメータに応答してなされ得るか、あるいは、当該処理は、ポストリストアラサブシステム390bにおいてなされる、スタンドアロンの決定であり得る。ポストリストアラサブシステム390bにおける品質を向上させるべく使用され得る、エンコーダ100で計算される複数の特定のパラメータの見地から、エンコーダ100において、フィルム粒子ノイズおよび残留ブロックノイズの推定が存在してよい(デブロッキングの後ですら)。フィルム粒子ノイズについては、複数のパラメータが計算されることができ、また、複数のパラメータが出力ビットストリーム111および/または入力ビットストリーム201を介して、デコーダ200に送信され得る場合、これらのパラメータを使用して、フィルム粒子ノイズを合成化してよい。同様に、エンコーダ100における任意の複数の残留ブロッキングアーチファクトについては、それらが測定可能であり、かつ、複数のパラメータが出力ビットストリーム111および/またはビットストリーム201を介して送信される場合、ポストリストアラサブシステム390bは、これらパラメータをデコードしてよく、また、ポストリストアラサブシステム390bは、これらパラメータを使用して、表示に先立ち、追加的なブロッキングを任意で実行してよい。また、エンコーダ100は、シーンの変更、空間の複雑度、時間的な複雑度、動き範囲、およびポストリストアラサブシステム390b内での品質復元に役立ち得る予測距離情報にアクセスできてよい。
【0069】
図3Bにおいて、サブシステム330bから390bまでは、デコーダ300bに係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、本明細書のデコーダ300bの他の複数の実装は、サブシステム330bから390bまでにわたるデコーダ300bの複数の機能モジュールの異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に記載の例示的なサブシステム330bから390bの実装は、図示されたデコーダ300bに係る複数の特定の例示的機能モジュールのサブセットのみのタスク、複数の追加の機能モジュールのタスクを、および/または図示されたものとは異なる配置において含んでよい。
【0070】
図4を見ると、一例の形態において、本明細書に開示された方法およびシステムを提供すべく、量子化アダプタおよびレートコントロール400は、初期qpジェネレータ402を含んでよい。初期qpジェネレータ402は、フレームデータおよび後述される各フレームのための複数のピラミッドランキングを受信した後、各フレームに対し、初期の既定のQpを生成する。フレームの複雑度は、複雑度値ジェネレータ404によって判断され、Qp制限ユニット406は、複数のQp値に対する複数の制限を判断する。シーケンス開始および静的シーンQp計算ユニット408は、複数の静的フレームまたは開始フレームのQpを提供する一方で、バッファコントロール412は、バッファステータスまたは充填量によって、フレームQpを提供すべく、バッファモデル410を使用する。よって、バッファコントロール412は、特定の充填量レベル(または動作ポイント)に達したかどうかを判断するためのバッファ充填量ユニット414を有し、そうでない場合、フレームのQpを調整すべく、デルタQpユニット416が提供される。フレームのために使用されるQpは、次にシーケンス非開始/アクティブなシーンQp計算ユニット418によって計算されてよい。1つの代替として、ルックアヘッドオプションを備えた1パスCBRコントロールを提供すべく、バッファコントロール412は、ルックアヘッドキーフレームブースティングユニット422、ルックアヘッド時間的複雑度マスキングユニット424、およびルックアヘッドQp係数スムージングユニット426を備えた、オプションのルックアヘッド時間的適応制御420を含んでよい。ルックアヘッドキーフレームブーストユニット422、ルックアヘッド時間的複雑度マスキングユニット424、ルックアヘッドQp係数スムージングユニット426は、すべて以下詳細に後述される。
【0071】
図5を参照すると、別の代替として、2パスVBRレートコントロールを提供すべく、量子化アダプタおよびレートコントロール500は、レートコントロール400に対する追加の、あるいは代替の複数のコンポーネントを有してよい。そのようなものとしては、どの複数のフレームが複数のより複雑なフレームであるかを判断するための第1のパスアナライザ502、より最終的なフレームQpを提供するための第2のパスアナライザ504、およびQpに対するさらなる複数の調整を行うための第2のパスエラー訂正およびビットコントロール506がある。この構成に対し、第1のアナライザ502は、初期固定Qpジェネレータ508、複雑度値ジェネレータ510、およびQp制限ユニット512を有してよい。第2のパスアナライザ504は、キーフレームブースティングユニット516、時間的複雑度マスキングユニット518、およびQp係数スムージングユニット520を備えた時間的適応制御514を有してよい。第2のパスアナライザ504は、ターゲット固定Qpジェネレータ522および最終エラービットおよびターゲットビットジェネレータ524を有してよい。これらの要素の動作は、さらに詳細に後述される。
【0072】
図6を見ると、例示的な処理600を示すフロー図が、本開示の少なくとも一部の実装に従って配置されている。処理600は、番号602および604の、1または複数の動作によって示される、1または複数の動作、機能、あるいはアクションを含んでよい。処理600は、次世代ビデオコーディング処理の少なくとも一部を形成してよい。非限定的な例として、処理600は、図1のエンコーダシステム100、レートコントロール400または500、および/または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムによって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【0073】
処理600は、「入力ビデオ順序で、マルチレベル階層に関連付けられたピクセルデータの複数のフレームを取得する。マルチレベル階層は、複数の参照フレームとして使用される少なくとも複数のI‐ピクチャまたは複数のP‐ピクチャまたはそれら両方を備えるベースレベル、ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベル、および複数の参照フレームとして使用されず、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルを備える。ここにおいて、複数のP‐ピクチャは、順序に対する複数の過去フレームを複数の参照として使用し、最大レベル上の複数のピクチャは、過去、将来、またはそれら両方の参照を使用するオプションとともに提供される」602を含んでよい。I‐ピクチャは、空間的にコードされた、すなわち「複数のイントラ」ピクチャである。最大レベル上の複数のピクチャは、双方向の、すなわち複数のB‐ピクチャであってよい。あるいは、そのような双方向の複数のフレームは、機能的な、すなわち複数のF‐ピクチャであってよい。複数のF‐ピクチャは、複数のB‐ピクチャと同様であるが、複数のF‐ピクチャが、モーフィング技術または合成技術によって修正された、修正された複数の参照を使用できる点が異なる。そのような修正は、ゲイン補償、ブラー/レジストレーション補償、またはグローバル/ドミナント動き補償等の複数のモーフィング技術を含んでよい。複数の合成技術は、予想された補間または超解像度を含む。
【0074】
処理600は、「現在のフレームに対する量子化パラメータを、現在のフレームの階層レベルに少なくとも依存して判断する」604も含んでよい。特に、本明細書で説明される通り、初期または既定のQpを判断すべく、階層またはピラミッドが使用されてよい。1つの形態として、ランク(0)(ベースレベルとも言われる)Qpが確立され、残りの複数のランクに対するQpは、上記ランク(0)Qpに基づく。これは、バッファステータスまたは充填量によっては、一部のフレームに対するQpを調整する、1パスCBRレートコントロール処理において提供されてよい。あるいは、上記Qp処理は、2パスVBR処理であってよい。2パスVBR処理では、一部のフレームに対するQpを最終確定すべく、フレームシーケンスの第2の完全な分析パスを実行する前に、どの複数のフレームがより複雑(またはアクティブ)であるかを判断すべく、フレームシーケンスの初期の分析を実行する。2つのパスのために十分な時間が利用可能でない場合、シーケンス全体に完全な分析を実行する前に、選ばれた数の将来のフレームに対し、初期の分析を実行する、ルックアヘッド処理を備えた、妥協の1パスVBRレートコントロールが使用されてよい。以下詳述する。
【0075】
[1パスCBRレートコントロール]
詳細について図7を見ると、例示的な1パスCBRレートコントロール処理700が、本開示の少なくとも一部の実装に従って配置されている。処理700は、702から758までの番号が一様に付けられた、1または複数の動作によって示される、1または複数の動作、機能、またはアクションを含んでよい。処理700は、次世代ビデオコーディング処理の少なくとも一部を形成してよい。非限定的な例として、処理700は、図1のエンコーダシステム100、レートコントロール400、および/または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムによって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【0076】
処理700は、「レートコントロール(RC)スタートアップを実行する」702を含んでよい。予め、当該処理、またはこの動作702は、固定Qpコーディングが使用されるレートコントロールモード(例えば、Qpを変更するためのレートコントロールなし)、1パスCBRモード、2パスVBRモード、または1パス(ルックアヘッド)CBRモード等の、複数のレートコントロールパラメータの初期化を含んでよい。上記複数のパラメータは、ターゲットビットレート(Kbps単位)およびKb単位での最大バッファサイズも含んでよい。これらのコマンドラインパラメータに基づき、異なる複数のレートコントロールパラメータ(複数のバッファ、複数の推定モデル等)が、複数の適切な値に設定される。シーケンスのビットレートおよび解像度に基づき、複数の初期の既定のQpが、複数のフレームの複雑度を要因とする、かつ、複数のフレームの階層またはピラミッドランクに基づき異なる、複数の所定のテーブルに基づいて、導き出されてよい。
【0077】
図8を見ると、まず階層について、フレームまたはビデオシーケンス800とともに説明され得る。そのようなフレームシーケンスは、8つのピクチャからなる反復パターン802を形成してよい。各フレームまたはピクチャは、コーディング順ではなく、表示順、より正確には入力ビデオ順に、1から16の番号が付けられており、ピクチャタイプ(I、P、F、またはf)のラベルが付けられている。ここで、大文字Fは、Fピクチャが参照フレームとして使用可能なことを示し、小文字のfピクチャは、少なくともこの図では、参照フレームとして使用されない。ピクチャタイプの表記上の上付き文字は、フレームが、どのピラミッド若しくは階層レベルまたはランクに存在するかを示し、それにより、複数の依存関係の矢印804でも示される、複数の参照フレームの依存関係を示す。
【0078】
ピクチャシーケンス800は、ランクゼロ(0)、およびランク1から3を備えた3レベルのピラミッド(ピラミッドレベルの数字にランク(0)を含まない場合)を含む。ベースまたはランクゼロ(0)のフレームは、I‐ピクチャ0(換言すれば、0回)を含んでよい。I‐ピクチャ0は、P‐ピクチャ8への参照フレームであり、P‐ピクチャ8自身はP‐ピクチャ16への参照フレームであり、これらすべては、これらの上付き文字で示されるようにランクゼロである。各パターン802は、第1の階層レベル内に、1つの(ランク1)の参照F‐ピクチャ4または12を、第2の階層レベル内に、2つの(ランク2)の参照F‐ピクチャ((2および6)または(10および14))を、第3の階層レベル内に、4つの非参照(ランク3)のf‐ピクチャ(1,3,5,7または9、11、13、15)を有する。この例においては、1から3の周期レベル内で、各フレームは、ランク値が1つ小さいレベルからの参照を有するが、常にこのような方法である必要はない。また、現在のフレームから、その参照フレームへの依存関係は、複数のレベルを飛び越えてよく、あるいは依存関係は、同一レベル上で追加の複数の依存関係を有してよい。本明細書に開示される方法およびシステムは、フレームがベースまたはランク(0)レベルからより遠いレベル上にあるにつれ、より高い圧縮を使用することで、イメージ品質を著しく犠牲にすることなく、最大の圧縮により近づくというコンセプトを使用する。
【0079】
この構成を念頭に置き、かつ、より優れたレートコントロールのために、Qp変調が、RCスタートアップ動作702内のピラミッドコーディング構造内で使用され、NGVエンコーダ等のビデオコーディングのためのエンコーディング用の既定の固定Qpを形成する。
【0080】
図9を見ると、複数のフレームの複数の階層ランクに基づき、複数の初期Qp値を導き出すためのスタートアップ処理900が示されている。スタートアップ処理900は、一例において、RCスタートアップ動作702を実行すべく、ピクチャ量子化ユニットまたは初期Qpジェネレータ402によって実行されてよい。概して、複数のランク(0)フレームにQpが最初に提供され、次に、他の複数のランクに、複数のランク(0)フレームに基づき、Qpが提供される。よって、複数のランク(0)フレーム上の動作902で開始し、Qpは、コマンドライン(-q N)で指定可能なものとなるよう、Pピクチャルマ量子化(inter_q[0])に割り当てられる904。コマンドラインを介して直接指定されない場合、既定のマッピングに基づき、P‐ピクチャクロマ量子化(inter_q[1])を導き出すべく、オフセットが追加される。よって、以下の複数の計算および複数の処理は、主にルマQpに関するものであり、関連する複数のクロマ値を取得すべく、本明細書において詳細に提供しないオフセットが、複数のQp値に追加されてよいことが理解される。複数の同一または類似の処理が、複数のクロマ値に適用可能であり、複数のクロマ値はその後代わりに複数のルマ値に変換されることが理解される。ルマ/クロマ変換のためのオフセットについては、以降本明細書では言及されない。
【0081】
ここで、初期の既定P‐ピクチャランク(0)Qp(inter_q[0])の取得方法へ進む。それについては以下に詳細に後述されており、ランク(0)のI‐ピクチャ量子化およびF‐ピクチャ量子化が、擬似コードで以下に提供される、所定の複数のマッピングテーブルを使用し、inter_q[0]から導き出し904または判断906される。
【数1】
式(1)
【数2】
式(2)
【数3】
式(3)
式中、Nは、以下で計算される、inter_qの既定の割り当て値である。I‐ピクチャ(intra)およびF‐ピクチャ(fpic)の複数のQp値を取得するための、例示のAutoIQおよびAutoFQのマッピングテーブルが以下に示される。上限値は、対応するintra値またはfpic値より高い中間値である。
【0082】
AutoIQ(intra Q)マッピング:
const double AutoIQ[128] = {
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1.00,1.00,1.75,2.75,3.50,4.50,5.25,6.25,7.00,8.00,9.00,9.75,10.75,
// 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
11.50,12.50,13.25,14.25,15.00,16.00,17.00,17.75,18.75,19.50,20.50,21.25,
// 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
22.25,23.00,24.00,25.00,25.75,26.75,27.50,28.50,29.25,30.25,31.00,32.00,
// 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
33.00,33.75,34.75,35.50,36.50,37.25,38.25,39.00,40.00,41.00,41.75,42.75,
// 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
43.50,44.50,45.25,46.25,47.00,48.00,49.00,49.75,50.75,51.50,52.50,53.25,
// 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
54.25,55.00,56.00,57.00,57.75,58.75,59.50,60.50,61.25,62.25,63.00,64.00,
// 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
65.00,65.75,66.75,67.50,68.50,69.25,70.25,71.00,72.00,73.00,73.75,74.75,
// 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
75.50,76.50,77.25,78.25,79.00,80.00,81.00,81.75,82.75,83.50,84.50,85.25,
// 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
86.25,87.00,88.00,89.00,89.75,90.75,91.50,92.50,93.25,94.25,95.00,96.00,
// 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
97.00,97.75,98.75,99.50,100.50,101.25,102.25,103.00,104.00,105.00,105.75,106.75,
// 121, 122, 123, 124, 125, 126, 127
107.50,108.50,109.25,110.25,111.00,112.00,113.00
};
【0083】
AutoFQ(fpic Q)マッピング:
const double AutoFQ[128] = {
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1.00,1.00,2.00,3.00,4.00,5.25,6.50,7.75,9.00,10.25,11.50,12.75,14.00,
// 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
15.25,16.50,17.75,19.00,20.25,21.50,22.75,24.00,25.25,26.50,27.75,29.00,
// 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
30.25,31.50,32.75,34.00,35.25,36.50,37.75,39.00,40.25,41.50,42.75,44.00,
// 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
45.25,46.50,47.75,49.00,50.25,51.50,52.75,54.00,55.25,56.50,57.75,59.00,
// 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
60.25,61.50,62.75,64.00,65.25,66.50,67.75,69.00,70.25,71.50,72.75,74.00,
// 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
75.25,76.50,77.75,79.00,80.25,81.50,82.75,84.00,85.25,86.50,87.75,89.00,
// 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
90.25,91.50,92.75,94.00,95.25,96.50,97.75,99.00,100.25,101.50,102.75,104.00,
// 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
105.25,106.50,107.75,109.00,110.25,111.50,112.75,114.00,115.25,116.50,117.75,119.00,
// 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
120.25,121.5,122.75,124.00,125.25,126.50,127.75,127.75,127.75,127.75,127.75,127.75,
// 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
127.75,127.75,127.75,127.75,127.75,127.75,127.75,127.75,127.75,127.75,127.75,127.75,
// 121, 122, 123, 124, 125, 126, 127
127.75,127.75,127.75,127.75,127.75,127.75,127.75
};
【0084】
intra_q[0]およびfpic_q[0]に対する複数の値が上記複数のテーブルから取得されると、前述の通り、複数のI‐ピクチャおよびF‐ピクチャに対する複数のクロマ量子化も、複数のクロマオフセットを、複数の対応するルマ量子化に追加することで導き出される。
【0085】
1例のアプローチとして、ピラミッドコーディングについては、これらの既定のQpが複数のZERO_RANKフレーム(ランク(0))にのみ使用され、すなわち、ゼロランクのPピクチャにはinter_q[0]が、ゼロランクのI‐ピクチャにはintra_q[0]が使用される。ランク(0)に対する複数の第1の初期の既定Qp値が設定されると、処理900は、ピラミッドコーディングを実行してよい。ピラミッドコーディングは、最大ランクrに到達したかどうかの判断908で開始する。到達していない場合、1つの可能な例として、ランクrは、r+1に設定される(動作910)。より高いランク「r」(r≠0)の任意のフレームについては、次の式を使用(914)し、対応するQpが導き出される(912)。
【数4】
式(4)
式中、((fpic_q[0] - inter_q[0]) + 1.0/2.0)は、デルタ係数と考えられる。よって、ランクr=0の後、ランクrは、前述の式(4)の使用のために、1に設定される。この式は、PおよびFの両方のピラミッドコーディングに対し良好であり、次に、この式を用いて、同一ランク上の複数のフレームは、同一の初期または既定のQp値(この場合、各ランクはQp値を有する)で開始する。つまり、より高いランクの任意のフレームに対するQpが、固定デルタ値を、その直前(またはより低い)のランク参照フレームの初期の既定Qpに追加することで、そのフレームタイプに関係なく、導き出される。これについて別の言い方をすると、デルタ係数に式(4)のrを乗じる代わりに、現在のランクに対し、より低いランクの隣接値のQpに、デルタ係数を追加すると、同一の結果が取得される。最大r値に到達すると、処理900は、量子化適応コントロールに対し、複数の初期/既定のQpを提供918してよい。ランク(0)またはベースレベル上にF‐ピクチャが実際には存在しない場合ですら、上記式が使用されることにも留意されたい。
【0086】
一例において、階層またはピラミッドコーディングについて、さらなる適応量子化が、複数のMAX_RANKのF‐ピクチャ(ピラミッド内で最大値のランク)に対しのみ実行されてよい。任意の他のランクについては、Qpが前述の式(1)から(4)において導き出され、当該Qpが、そのフレームタイプに関わらず使用される。一方、複数のMAX_RANKのF‐ピクチャについては、式(4)で導き出されたフレームQpは使用される前に、その分類(フラット/混在/テクスチャ)に基づく領域タイプに、さらに適応されてよい916。
【0087】
図10を見ると、式(4)を示す、例示のフレームシーケンス1000が提供されている。フレームシーケンス1000は、16のフレームと、F‐ピラミッドコーディングを持つ階層Qp構造とを備える、シーケンス800(図8)のフレームに類似するフレームシーケンスを有する。ここでは、複数のF‐ピクチャのみが、ランク(0)レベル以外の、複数のより高いレベルを形成する。1から16まで順に複数のフレームを接続する複数の線は、入力ビデオ順序を示すものにすぎず、必ずしも、何らかの参照依存関係またはコーディング順序を示してはいない。ここにおいて、inter_q[0]に割り当てられた既定のQpは、P Qpが8(すなわち、-qp 8)の指定コマンドラインからのものであると仮定されている。これは、この例のために構成されており、複数のQp値に対する何ら実際の限定を提供するものではない。一方で、inter_q[0] = 8である。他の複数の導き出されるQpは、intra_q[0] = 7、およびfpic_q[0] = 9であってよい。この例では、複数のI‐ピクチャは、ゼロランクであり、intra_qは7でコードされる。複数のPピクチャは、ゼロランクであり、inter_qは8でコードされる。既定のinter_q[0]およびfpic_q[0]を上記式(4)に挿入すると、ランク1の複数のF‐ピクチャは、導き出された9.5のQpでコードされ、ランク2の複数のフレームは、導き出された11のQpでコードされ、ランク3の複数のフレームは、導き出された12.5のQpでコードされる。
【0088】
図11を見ると、P Qpが8(すなわち-qp 8)の指定コマンドラインに対する、Pピラミッドコーディングを有する、階層Qp構造が提供されている。P‐ピラミッドについては、複数のP‐ピクチャが、最大(MAX_RANK)レベル3を除き、ランク(0)レベルに加え、複数のレベルを占めてよい。このシナリオについては、既定のQpがinter_q[0]に割り当てられる。よって、一例において、inter_q[0] = 8である一方で、他の複数の導き出されるQpは、intra_q[0] = 7、fpic_q[0] = 9である。複数のI‐ピクチャはゼロランクであり、intra_qは7でコードされる。ランク0の複数のPピクチャは、導き出される8のQpでコードされる。ランク1の複数のフレームは、導き出される9.5のQpでコードされる。ランク2の複数のフレームは、導き出される11のQpでコードされる。MAX_RANKランク(3)の複数のF‐ピクチャは、導き出される12.5のQpでコードされる。
【0089】
複数のZERO_RANK参照フレーム間(通常、複数の隣接レベルの複数のQp値間で8、12、16または20で変わり得る)で、Qp変化のこのピラミッド構造を維持することで、レートコントロール内のピラミッドコーディングの複数のゲインもまた保存される。これは、複数の量子化パラメータの残りは、上述のピラミッド構造内で導き出される一方で、レートコントロールは、バッファステータスに従って、複数のZERO_RANKフレームQpを変調すべきであることを意味する。しかしながら、このピラミッドコーディング構造については、バッファコントロールモデルは、主に、複数のゼロランクフレームにおける複数のQpを制御することによって、平均ビットレートを、ターゲットビットレート近傍に維持すべきである。
【0090】
よって、ここにおいて、ターゲットビットレートに対応する中間のZERO_RANKのP Qpを検索および維持すべく、レートコントロールが使用されてよい。バッファコントロールは、この中間のP Qpをシーンの複雑度および複数のバッファ制約に起因して複数のバッファが変動するとき変調する。また、中間のP Qpが修正される場合は常に、複数の異なるフレームタイプに対応するあらゆるQpおよび、より高いランクの複数のフレームは、最後に更新されたP Qpを使用して再計算されるべきである。
【0091】
ここで、初期の既定ランク(0)のP‐ピクチャQp(inter_q[0])または初期のQp推定(図9の動作902)の計算に戻る。この動作はまた、ピクチャレートコントロールの平均時間的複雑度を計算する動作704の一部である、あるいは動作704を含むと考えられてよい。この動作は、平均複雑度ジェネレータ404によって実行されてよい。これは、現在のフレームQpを決定する、各フレームのエンコーディング前のフレームレートコントロールの一部である。レートコントロールの他の複数の方法は、ターゲットビットレートに関わらず、あらゆるシーケンスに対し、あらかじめ固定された固定Qpで開始する一方で、これは良好な品質のターゲットビットレートを常に実現するわけではない。より良好なまたは最善の品質を持つターゲットビットレートを実現すべく、レートコントロールは、シーケンスの複雑度、その解像度、およびターゲットビットレートに基づく、正確なQpで開始されてよい。よって、これまでにpdistanceモジュール内の複数のバッファ内に読み取られている、すべての将来の入力フレームに基づき、以下のように初期の既定のinter_q[0]を提供すべく、平均時空複雑度が計算および使用され得る。
【0092】
複数の実験に基づき、シーケンス複雑度、ターゲットビットレート、およびQp間の関係が導き出される。2〜3の例を挙げると、common intermediate format(CIF)またはYCbCrビデオコーディングフォーマットの複数のシーケンスは、F‐ピラミッドモードのレベル0から3にぞれぞれ対応する8、16、32、および56の複数の固定Qpでエンコードされる。すべてのCIFシーケンスの平均データに基づき、これらの量の間から、次の複数の関係が導き出される。
【0093】
図12を見ると、このモデルに当てはまる単純な一次関係(対数領域の線形)は以下のようになる。
【数5】
式(5)
式中、logQは、推定Qpの対数であり、C = (avg_temporal_complexity /target_bitrate)であり、target_bitrateはbps単位、avg_temporal_complexityは(avgTSC/(width*height)^0.25) として計算される、利用可能なあらゆる将来のフレームのtemporal_complexityの平均である。式中、TSCは簡単に言うと時間的な空間複雑度または時間的な複雑度の基準を意味する。
【0094】
複数の将来のフレームの複雑度は、PDistanceモジュールから利用可能である。一例において、PDistanceモジュールは、適応ピクチャ構造オーガナイザ104の一部であってよく、またPDistanceモジュールは、現在のフレームタイプを決定する前に、少なくとも少数のフレームを将来に先立って読み取る(Pdistanceは、複数のP‐ピクチャ間のフレーム数である)。よって、時間的な複雑度の基準(TSC)は、複数の将来のフレームに対し、複雑度基準として、計算済みである。これはあらゆるシーケンスに対し、9.66の平均予測エラーを有する。
【0095】
図13を見ると、より精密な二次関係(対数領域)である。
【数6】
式(6)
これは、あらゆるシーケンスに対し、10.76の平均予測エラーを有する。最終Qpは次のように導き出される。
【数7】
式(7)
【0096】
この推定Qpが、エンコーディングのための初期のQpとして使用される。これは、本明細書でPqpまたはPQpとも呼ばれるinter_q[0]のような、ZERO_RANKのP‐ピクチャQpに割り当てられる。ここから、複数の異なるフレームタイプおよび複数のより高いランクに対する、複数の既定かつ初期の、および固定のQpの残りが式(1)から(4)より導き出される。
【0097】
処理700はその後、複数のQp制限値の計算706で継続してよい。上記複数のモデルから導き出される複数の初期のQpは、いくつかの一般的制限を受ける。いくつかの一般的制限は、一例として、Qp制限ユニット406によって判断されてよい。初期の少数のフレームについては、複数の推定モデル内にいくらかの履歴が構築されるまでは、処理700は、シーケンス開始のための複数のQp制限値の提供708を含んでよい。その結果、当該複数のQp制限値が、異なる複数のシーケンスの観測に基づき計算される複数の所定の(Qp推定)テーブル(図14から18)から導き出されるようになる。より具体的には、絶対的な開始、すなわちシーケンスのまさに開始のために、複数の初期のQp推定テーブルが作成されており、これらテーブルは複数の境界Qpを導き出すのに用いられた複数の実験に基づいている。これらのテーブルは、複雑度、ビットレート(bpp)およびZERO_RANKのフレームQpのマッピングである。これらのテーブルは、特定のターゲットビットレートを生成可能な、計算された平均複雑度を備えた、完全なシーケンスのための中間のZERO_RANKのP‐ピクチャQpの予測を試行する。Qpの最大制限値および最小制限値は、以下に説明される、複数の対応する最大および最小の所定のテーブルから導き出される。
【0098】
セットのシーケンスが既定の固定Qpコーディングでエンコードされ、Qp、生成されるビットレート(ピクセル毎のビット数(bpp)およびbpp_idとしてインデックス付けされた観点から)、および平均時空複雑度(avgTSC)間の関係が観測済みである。テーブルは、ほぼこの傾向をたどる複数の異なるシーケンスに対する、そのような複数の観測に基づいて作成された。
【0099】
ビットレートインデックスbpp_idの計算については、指定されたビットレート、フレームレートおよびシーケンスの解像度に基づき、ピクセル毎のビット数が次のように計算され得る。
【数8】
式(8)
式中、width*heightはフレームの解像度である。さらに、ビットレートインデックス(bpp_id)は、複数の正確なbpp値を、9つの可能性のある整数0から8のうちの1つに減少させるための、図14に係る「bpp対bpp_idマッピング」テーブルを使用し、導き出される。テーブルに示される複数のbpp値は、その範囲またはインデックス値の最大値である。よって、例えば、0から0.0152までの任意の値に対し、bpp_idは0であるといった感じである。
【0100】
同様に、平均時空複雑度基準インデックス(cpx_id)を判断すべく、複数の連続するフレーム間の第1の動き補償残留エネルギーが使用され、時空複雑度の基準(cpx)が判断される。この基準は、入力シーケンス内の複数の連続するフレームに対し計算され(約20のフレームの最大pdistanceおよび約5のフレームの最小)、平均はavgTSCとして計算される。その後、平均値(avgTSC)の複雑度インデックス(cpx_id)は、cpx_idの範囲または整数を判断するための、図15に係る「cpx対cpx_idマッピング」テーブルを使用し、導き出される。ここでは、cpxに対応するcpx_idに0から9の番号が振られている。テーブルに示される複数のavgTSC値は、そのインデック値に対する最大値であり、結果的にcpx_id = 0は0から0.75までのavgTSCを範囲とするといった感じである。ただし、9.25(INT_MAX)を超える値はすべて、インデックス値9に対応する。
【0101】
ビットレートおよび複雑度の複数のインデックス値が取得されたら、中間のQpは、図16の「中間QPテーブル」(あるいはMeanQp[cpx_id][bpp_id])、図17の「最小Qpテーブル」(あるいはMinQp[cpx_id][bpp_id])、図18の「最大Qpテーブル」(あるいはMaxQp[cpx_id][bpp_id])から判断され得る。ここで、複数のcpx_id値は、各テーブルの側端に、複数のbpp_id値はテーブルの上端にある。
【0102】
minQpテーブルおよびmaxQpテーブルを使用して、以下のように複数のQp境界が導かれる。
【数9】
式(9)
【数10】
式(10)
【0103】
レートコントロールQpを制限するためのこれらの制限値は、全フレームに対してではなく一部のフレームに対し、使用される。というのは、この基準は、バッファステータスを考慮しないからである。よって、これによって、実際のビットレートがターゲットビットレートから逸れる結果となり得る。
【0104】
あるいは、処理700は、履歴に基づいて複数のQP制限値を確立710することを含んでよい。平均的な複雑度に対して使用される過去の全ビット数および使用された平均Qpに関するいくらか(ある程度)の履歴が確立された後、新しいフレームのためのQpは、現在のフレームを含む、複数の過去の統計に対する予想された複雑度およびビット数に基づいてよく、これは、現在のフレームを含む、全ビット消費量をターゲットレート近傍に設定するものである。複数のQp制限値は、標準的なP対IおよびP対FのQpマッピングを使用する、このQpから導き出される。よって、複数のビットおよびQpモデル、および最小Qpおよび最大Qpは、次の式の使用から導き出されてよい。
【0105】
【数11】
式(11)
式中、cplxが現在のフレームの複雑度であり、target_bitsが現在のフレームを含む全フレームに対する全ターゲットビット数である場合、avg_pqpは、これまでにエンコードされた全フレームの複数の平均Pqpであり、avg_cplxは平均時空複雑度であり、act_bitsは、これまでにエンコードされた全フレームに消費された全ビット数である。これにより、現在のフレームをエンコードするのに必要とされるQpがもたらされ、Qpがact_bitsをtarget_bits近傍に近づけ得る結果をもたらす。概して、複数の連続するフレームに対するQpに、avg_pqpの約15%のドリフトが許容される。Qpにおける結果的に得られる変化がこの制限値を上回る場合は、これが複雑度における突然の変更の結果であるとき、pqpの約25%の最大ドリフトが許容される(avg_cplxの約25%を上回ることにより)。このQpは、中間Qpに割り当てられる。
【0106】
複雑度あるいはビット消費量のいずれかに多数の変更がある場合、上記の基準は、中間と境界Qpに突然の変更をもたらし得ることが観測された。これを克服するには、上記基準の使用は、Qpと複雑度の偏差が、特定の複数の制限値内である場合の特別なケースに制限されてよい。換言すれば、これまでの現在のフレームの複雑度および実際のビットレートが、これまでの平均的な複雑度およびターゲットビットレートにそれぞれ比較的近い複数の状況の場合に、当該代替の履歴は、制限されてよい。
【0107】
第3の代替において(既定と考えられてよい)、シーケンスの残部に対し、シーケンス内でこれまでにエンコードされた複数のフレームである、平均または既定のP Qpを直接中間Qpとして使用する712。よって、ここでの既定の中間Qp、あるいは履歴べースの中間Qpのいずれかが上記のように確立されると、上記の擬似コード内のAutoIQ およびAutoFQマッピングに基づく、標準のP対IおよびP対FのQpマッピングを使用する、これらのQpから、Qpの最大制限値および最小制限値が導き出される。
【数12】
式(12)
【数13】
式(13)
式中、mopは、中間動作ポイントである。よって、式(7)から導き出されるQpは、これらの制限値に抜き出される。
【数14】
式(14)
Qpclipが元々これらの制限値を上回っている場合、Qpclipを最も近い制限値に設定する。
【0108】
処理700は、その後、フレームQpの判断714を継続する。1形態として、この処理は、フレームが空白または静的シーンであるかどうかを判断する716、フレームのチェックを最初に含んでよい。これは、特定数の連続するフレームが同一ピクセルデータを有するかどうかの判断によって実行されてよい。シーンが静的または一連の空白フレームである場合、既定の固定Qpが使用される。上記の通り、この処理は、一例において、静的/空白シーン計算ユニット408によって、Qpを判断720すべく、平均P Qp、フレームタイプ、およびランクの提供718を含んでよい。これがシーンの途中で発生した場合(例えば、短時間、シーンが静的/空白になるとき)、複数の最後の安定状態Qpが、複数の空白/静的フレームとして検出されたこれまでの全フレーム(またはこの時点まで)に対し使用される。
【0109】
また、フレームがシーケンスの開始かどうかを、例えば、複数の既知の動き分析技術を用いた、順序番号またはシーンの変更の検出によって判断されてよい722。フレームがシーケンスの開始またはシーンの変更であると判断された場合、平均的な複雑度、ターゲットビットレート(bpp)および実験に基づき作成されたQpモデリングが提供されてよい724。開始シーケンスのより最終の、あるいは最終のフレームQpは、一例において、シーケンス開始計算ユニット409によって計算されてよい。シーケンス開始計算ユニット409は、複数の既定の固定Qpに対するものと同一の複数の計算726である。よって、ランク(0)のPqpは、式(7)からのinter_qpであってよく、残りの複数のレベルまたはランクは、先に説明した式(4)からの自身のQpを受信する。このQpは、前のQp制限セクション(式(8)から(14))で導き出された複数の制限値に規制される。時折、開始(複数の空白フレーム等)における異常な複雑度が原因で、モデルは誤ったQpを予測する可能性があるので、これが実行されてよい。
【0110】
あるいは、後述のように、バッファステータスは複数のフレームに対するビット推定を使用し、判断されてよい。特に、複数の初期または開始シーケンスフレームに対するビット推定は、複数のあらかじめ計算されたビット推定モデルの使用を含んでよい。あらかじめ計算されたビット推定モデルは、複数の線形推定モデル(ビット推定のために、後続的に使用される)が少なくとも1つのデータポイントを介して適応されるまで、初期の少数のフレームに対する複数のターゲットビットを推定するのに使用される。I‐ピクチャコーディングについては、最初のI‐ピクチャが、式(11)で導き出されるQpを使用し、コードされる。P‐ピクチャのビット推定については、現在のフレームがP‐ピクチャ(例えば、Fピラミッドのゼロランクのみ)である場合、Pの推定されるビット数は、以降の基準に基づいて導き出される。
【0111】
図19を見ると、「I対Pビット率に対するQp」というタイトルのグラフが提供されている。最初のI‐ピクチャがコードされた後にのみ、P‐ピクチャがコードされ得るので、P‐ピクチャのビット数は、I‐ピクチャのビット数に基づいて推定され得る。繰り返しになるが、複数の実験に基づいて、以下のI対Pピクチャビット率(ip_ratio)およびQp間の複数の関係が導き出される。
一次関係:
【数15】
式(15)
二次関係:
【数16】
式(16)
式中、ip_ratioは上記複数の関係の1つを使用し導き出され得、PqpはP‐ピクチャのQp値である。複数のP‐ピクチャの推定されるビット数は、以下の関係を使用し、導き出され得る。
【数17】
式(17)
ここで、上記モデルはCIFデータの平均に基づき、I_act_bitsは、I‐ピクチャの実際のビット数である。
【0112】
同様に、F‐ピクチャビット推定については、現在のフレームがF‐ピクチャである場合、Fの推定されるビット数は、将来のアンカP‐ピクチャから実際のビット数(コーディングが完了している場合)若しくは推定されるビット数のいずれかとして導き出される。ここで、アンカとは、入力ビデオ順序の現在のF‐ピクチャ後の、次のP‐ピクチャが参照フレームであることを意味する。以下の複数のpビットおよびfビット間の一次関係は、階層若しくはピラミッドにおける、ゼロ以外のフレームランクに基づいて判断される。
【数18】
式(18)
【数19】
式(19)
【数20】
式(20)
式中、pf_ratioは、上記複数の関係の1つを使用し、導き出され得る。複数のP‐ピクチャの推定されるビット数は、以下の関係を使用し、導き出され得る。
【数21】
式(21)
式中、Futr_anchor_bitsは、アンカP‐ピクチャの実際のビット数である。
【0113】
後に紹介および説明するように、いったん複数のビット推定が更新されると、比率方法を使用するより、シーケンスの開始近くにおけるレートコントロールに対し、複数の一次ビット推定モデルが使用されてよい。具体的に言うと、特定の複雑度および現在の中間Qpに対し、特定フレーム(特定タイプ(P‐またはF‐)およびランク)の推定されるビット数を予想すべく、レートコントロール内で複数の単純な線形推定モデルが使用される。当該アルゴリズムの最初のセクションで言及した通り、Qpは、ピラミッドコーディングを持つ階層構造内で変わる。同一ランクおよびタイプを有する複数のフレームは、距離においてより広範囲であり(図8および10から11内の入力ビデオ順序に沿って)、結果的に、複数の連続するフレーム(異なるランク上およびおそらく異なるタイプ)間のQpは、大きく変わり得る。複数の連続するフレーム間における、Qpのこの急激な変化によって、今度は、複数の連続するフレーム間のビット数の広範な変化をもたらし、線形推定モデルの推定および更新を複雑化させる。
【0114】
よって、複数の個別の線形推定モデルが、フレームタイプおよびランクの様々な組み合わせに使用される。全部で、約5つの有効なビット推定(I0、P0、F1、F2およびF3の(ピクチャタイプ)(ランク)等のための)が、Fピラミッドコーディングに存在する。これら線形推定が少なくとも1つのデータポイントとともに更新され、複数の初期のパラメータを導き出すまで、これらの線形推定は、使用されない。
【0115】
各推定は、次のような3つのパラメータで構成される。(1)値。モデルパラメータ。(2)重み。複数のモデルパラメータの更新中に、現在のサンプルと比較された過去の平均に対し、重み付けが与えられる場合。(3)長さ。長さは各データポイントでインクリメントし、モデルパラメータの平均値を見つけるために使用される。
【0116】
ビット数の推定は、時間的な複雑度を持つ特定フレーム(特定のタイプおよびランク)に対し、実行されてよい。式内のqpのためのCplxは次のようになる(例えば、ビット推定)。
【数22】
式(22)
【0117】
複数のビット推定の更新には、以下が含まれる。各フレームの実際のコーディング後、生成される実際のビット数が、特定のQpに対するビット数である場合、対応する推定の複数のモデルパラメータは、以下のように更新される。
【数23】
式(23)
【数24】
式(24)
【数25】
式(25)
【数26】
式(26)
式中、複数のモデルパラメータの複数の初期値は、複数のI‐ピクチャに対するLength=0、Value=0、およびWeight=0.25、および他の複数のピクチャタイプに対しては0.40を含む。Pdistanceモジュール内で計算される「TSC」基準はフレームのCplxの複雑度基準として使用される。本明細書におけるたくさんの式は、X += AはX = X + Aの割り当てを意味し、X *= AはX = X * Aを意味し、X -= AはX = X - A等を意味し、「++」は1ずつ等インクリメントすることを意味する、プログラミング言語で記載されていることを留意されたい。
【0118】
現在のフレームが開始シーケンスフレーム若しくは静的/空白フレームでない場合、処理700は例えば、バッファコントロール412を参照し、バッファステータスに基づいて、フレームQpを提供728する。よって、任意の他のフレームに対し、バッファコントロールがフレームQpを判断する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Qpが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを中間動作ポイントに近づける現在の中間Qpに対し、適用され得るデルタQp値が導き出される。これは以下のように導き出される。
【0119】
図20を見ると、Pqpは理想的なターゲットビットレートを提供可能な、ターゲットZERO_RANKP‐ピクチャ量子化パラメータであるとする。現在のフレームが式(4)を使用し、かつ、そのタイプトとランクとに基づく現在のPqpから導き出されたQpでエンコードされる場合、各フレームのエンコーディング前に、バッファコントロールは、一例において、バッファモデル410およびバッファ充填量ユニット414を使用し、バッファステータスを予想してよい。バッファオーバーフローまたはアンダーフローを回避すべく、推定されるバッファステータスに基づいて、現在のPqpは、未修正または修正済みのいずれかとされる。シーンの複雑度の変化に起因するバッファの揺らぎが存在する場合はいつでも、バッファコントロールは、現在のPqpをターゲットPqp近くに保つべく、現在のPqpの変調を試行する。よって、バッファを中間動作ポイント(buf_mop)に保つことは、Pqpを、特定の複雑度のシーンに対する中間Qp動作ポイント近くに維持することと等しい。Pqpがバッファコントロールによって修正される場合は常に、複数の異なるフレームタイプおよびランクに対応するすべてのQpは、上記の式(4)を使用して更新される。
【0120】
これを達成するには、バッファコントロールは最初にバッファの初期化730を含んでよい。バッファの初期化730において、バッファコントロールに対応する複数の異なるパラメータが、以下のように複数の適切な値に初期化される。複数の適切な値については、バッファまたはバッファモデル2000(図20)上に示されており、当該ページの垂直位置は、複数の関連する充填量レベルを示す。
【数27】
式(27)
【数28】
式(28)
【数29】
式(29)
【数30】
式(30)
【数31】
式(31)
【数32】
式(32)
式中、buf_fulは、現在のバッファ充填量である。処理700は、バッファの推定732で継続してよい。フレームシーケンスをコーディングユニットととも呼ばれる、2つのZERO_RANK参照フレーム間に位置される、複数のピクチャのサブグループ(SGOP)として考える。これについて別の言い方をすると、SGOPは、将来のZERO_RANKフレームから過去のZERO_RANKフレームに後続するフレームまでの、セットまたはシーケンスのピクチャまたはフレームであってよい。複数のバッファの現在の状態について、複数のQpおよび複数の推定モデル、およびバッファステータスは、SGOPの終了において予想されてよい。
【0121】
現在のSGOP内での全フレームに対し、ビット数は、複数の初期(シーケンス開始/スタート)フレームに使用される、複数のビット推定方法のいずれかを使用し、推定される(fr_est_bits)。具体的には、上記の複数のビット推定が、少なくとも1つのデータポイントとともに更新され、複数の初期のパラメータを導き出すよう、履歴が存在するかどうかが判断734される。不十分な履歴が存在する場合、特定の複雑度およびQpを持つ複数のフレームビットを推定する、複数の実験から導き出されたいくつかの割合モデルを含む、ビット率736が使用される。これらのビット割合モデルは、式(15)から(21)について説明したように、I対Pビット率、P対Fビット率等を含む。
【0122】
十分な履歴が複数のビット推定モデルに構築されると、フレームがその複雑度に対し消費することとなるビット数を推定するためにこれらが使用され得る。特に、この場合、線形推定モデルが、例えば、コーディングの現在の状態に基づき、使用(738)される(式(22)から(26))。よって、フレームタイプおよびランクに対応する現在のQpがフレームに使用されてよい。Qpは現在のPqpから導き出される。現在のユニット内で既にコードされているそれらのフレームについては、それらの実際のビット数は既にバッファ内で更新されている。
【0123】
ビット予測が確立740されると、複数のバッファインクリメント、複数のレベル、および閾値が計算742され得る。現在のバッファおよび複数の推定されるバッファレベルは、現在のバッファステータスが中間動作ポイントを下回るまたは上回るかのいずれかに基づき、概算のスケール、および1形態においては正確に−10から+10まで、複数のインデックスにマッピングされる。
【0124】
バッファインクリメントの閾値は、バッファが充填量のその現在のレベルにおいて許容可能な、フレームインスタンスの最大インクリメントである。平均バッファレベルと比較された現在のフレームインスタンスにおける、バッファインクリメントのレートは、推定可能である。現在のバッファレベルによって、所定のテーブル(図21)がこのバッファインクリメントに対する閾値を提供する。現在のSGOP内のコードされる全フレームに対し、これらのフレームが複数のQpの現在の動作セットを使用してコードされる場合、バッファインクリメントが計算される。バッファインクリメントは以下のように計算される。
【数33】
式(33)
SGOP内の全フレームについて:
【数34】
(式34)
式中、fr_est_bitsは、上記した初期フレームのビット推定の式を使用する、現在のフレームの推定されるビット数である。現在のフレームタイプおよびランクに対応するその時間的な空間複雑度およびqpは、式(4)を使用し、現在のPqpから導き出される。
【0125】
現在のバッファ充填量がbuf_fulの場合、同一のPqpを考慮する、予想されるバッファステータスは次のようになる。
【数35】
式(35)
【0126】
複数の異なるランクに対応する固有のQp構造によるピラミッドコーディングについては、複数のフレームビットは、同一パターン内においても変わる。よって、各フレームのバッファインクリメントを個別に計算する場合、推定されるバッファにおいて、さらなる広範な変化が存在することになる。それに代わるものとして、本思想は、SGOP全体のバッファインクリメントを計算することで、この広範な変化を無効化し、その後、推定されるバッファステータスに基づき、各フレームにおけるPqpを変調することにある。よって、現在のSGOPのコーディング開始前に、バッファステータスに対するバッファインクリメントが常に考慮される。
【数36】
(式36)
式中、last_buf_fulは、現在のSGOP開始におけるバッファステータス(buf_ful)である。バッファステータスは、各ZERO_RANK参照フレームのインスタンスにおいて更新され、バッファステータスは、SGOP内の各フレームに対するこのポイントからのbuf_incrと考えらえる。
【0127】
バッファに対するビット予測が取得されると、および複数のバッファレベル、複数のインクリメント、および複数の閾値が確立されると、処理700は、デルタQpの判断744で継続してよい。デルタQpの判断744は、Qpの最大調整を設定すべく、一例において、デルタQpユニット416によって実行される。より詳細には、はじめに中間動作ポイントがバッファ内で選択される。例えば、式(30)において、buf_fulは、全バッファ(buf_max)の約40%のレベルであるbuf_mopに設定される。現在のバッファ充填量(buf_ful)がこの動作ポイント(buf_mop)からそれる場合は常に、buf_fulを動作ポイントであるbuf_mopに戻そうと試みられるが、それはゆっくり行われる。バッファの中間動作ポイント(buf_mop)は、Pqp_mopが存在するよう、Pqpの中間動作ポイントに対応すると仮定される。よって、バッファコントロールの目的の1つは、現在のPqpをこの中間動作ポイントPqp_mop近くに維持することにあり、現在のPqpがシーンの複雑度の変更に起因してPqp_mopからそれるときはいつでも、動作ポイントPqp_mopに到達すべく、現在のPqpは少量変調されてよい。
【0128】
しかしながら、複数の隣接フレーム間での、より大きい量子化段階は、品質における複数の視覚的変化を引き起こすことになる。よって、Pqpは、フレーム間で、ターゲット動作ポイントが複数の小さいデルタ値で一致するよう、調整される。buf_fulが現在のバッファ充填量であり、buf_estは推定されるバッファレベルであり、buf_incrは、SGOPの開始からのバッファ内のインクリメントである場合、デルタQpは次のように導き出される。
【数37】
(式37)
式中、
【数38】
式(38)
および式中
【数39】
式(39)
ここにおいて、デルタQpの2つの係数が導き出される。1つは、バッファの現在の状態(vbv_delta、 式中vbvはビデオバッファリング検証機能を意味する)に対応し、もう一つは、現在のシーンの複雑度(cplx_delta)に対応する。これらの2つの係数は、個別に処理される。また、これらの2つの係数は、それぞれvbvユニット420およびcmplxユニット422によって計算されてよい。というのは、デルタQpは、これら2つのパラメータの組み合わせに基づく、複数の異なる値を仮定してよいからである。vbv_deltaについては、バッファインクリメントが、現在のバッファレベルの閾値を超えているかどうかを特定すべく、最初に現在のバッファ746の状態が判断され、一例において、この閾値が上回られている場合、vbv_deltaが計算および使用される748。次に、式(39)について、delta_qpfの最初の係数は、現在のバッファ充填量buf_fulに対応するvbv_deltaであり、バッファインクリメントのレートincr_rateは、次のように計算される。
【数40】
式(40)
式中、avg_buf_fulは、buf_fulの移動平均であり、omはbuf_fulがbuf_mopを上回るまたは下回るかに依存する、動作マージンである。バッファステータスにより、バッファインクリメントの最大レートに対する閾値が計算される。当該閾値を判断すべく、閾値テーブル(図21)が使用される。よって、incr_rateに対する閾値、brTは、閾値テーブル(図21)で示すようになる。
【0129】
「om」は次のように計算される動作マージンである。
【数41】
式(41)
バッファ充填量レベルは、次のように計算されてよい。
【数42】
式(42)
次に、buf_fulが境界内にあるかどうかを判断すべく、境界がチェックされてよい。
【数43】
式(43)
【0130】
バッファのインクリメントレートのための閾値は、次のように計算される。
【数44】
式(44)
【0131】
incr_rateが現在のバッファレベルに対するこの閾値を超える場合は常に、vbv_deltaに748が適用される。その場合、バッファステータスによるデルタQp重み付け係数が適用される。再度現在のバッファレベルに基づいて、重み付け係数が導き出される。vbv_deltaに対し、2つの可能性のあるケースがある。
【0132】
第1のケースにおいて(buf_ful >= buf_mop)、VBVは過剰消費である。
【数45】
式(45)
上記は、buf_incr > 0の場合にのみ適用される。
【0133】
第2のケース(buf_ful < buf_mop)において、VBVは過少消費である。
【数46】
(式46)
上記は、buf_incr < 0の場合にのみ適用される。
【0134】
第2の係数は、バッファインクリメント(またはbuf_incr)に対応する複雑度デルタ(Cplx_delta)であり、現在のシーンの複雑度に起因するデルタQp重み付け係数である。これは、VBVデルタに比べ、より小さな重み付けを有し、将来の複雑度を含むべく導き出される。Cplx_deltaが常に適用される。複数のバッファパラメータ(buf_ful、buf_mop、buf_incr、buf_max、およびbuf_est)を取得すべく、バッファが推定750されると、複雑度デルタを計算752するための、4つの可能性のあるケースがある。(1)(Buf_ful >= buf_mop) && (buf_incr>=0)。VBVは過剰消費であり、シーンの複雑度はより多くのビットを要求する。
【数47】
式(47)
(2)(Buf_ful >= buf_mop) && (buf_incr<0)。VBVは過剰消費であり、シーンの複雑度はVBVに複数のビットを戻し中である。
【数48】
式(48)
(3)(Buf_ful < buf_mop) && (buf_incr<=0)。VBVは過少消費であり、フレームはVBVを消耗中である。
【数49】
式(49)
(4)(Buf_ful < buf_mop) && (buf_incr>0)。VBVは過少消費であり、フレームはVBVを入力中である。
【数50】
式(50)
【0135】
処理700は、その後、デルタQpの計算754を含んでよい。1アプローチとして、現在の中間Qpに比例して、上記両方の係数が組み合わされて、単一のデルタQp値とされる。
【0136】
処理700は次に、フレームQpの計算756を含んでよく、これは一例において、シーケンス非開始/アクティブなシーンQp計算ユニット418によって実行されてよい。フレームQpは、上記のデルタQpを現在の中間Qpに追加することで導き出される。
【0137】
処理700は、Qp境界チェック758も含んでよい。Qp境界チェック758では、複数の連続するフレーム間での多すぎる偏差を回避すべく、修正されたPqpは、動作706に関し前述した複数のQp制限値を受ける。
【数51】
式(51)
Qpは、その後、フレームエンコーディングに利用可能である。
【0138】
その後、更新760が実行されてよい。P Qpがフレームにおいて修正される場合はいつでも、Qpが更新されてよく、結果的に複数の異なるランクに対応する複数のQpが、式(4)を使用し、更新される。現在のフレームタイプおよびランクに対応するQpは、フレームの実際のコーディングに使用される、現在のフレームのest_qpとして割り当てられる。
【0139】
コーディング状態およびバッファステータスが更新されるよう、レートコントロール(RC)更新は、各フレームのエンコーディングが完了後、実行されてよい。複雑度cplxを有する特定のタイプおよびランクの現在のフレームが、act_qpを使用してエンコードされ、それがact_bitsを生成する場合、バッファおよび複数の推定モデルの複数のパラメータが更新される。バッファ更新については、次のようになる。
【数52】
式(52)
【0140】
複数の推定モデルの更新について、現在のフレームタイプおよびランクに対応する複数のビット推定を使用する、線形推定モデルが、式(23)から(26)を含むシーケンス開始推定モデルと共に更新される。
【0141】
フィールドの終了(EOF)チェックが実行762され、GOP、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でない場合、TSC計算706で開始する、処理が再実行される。EOFに達したら、複数のレートコントロールパラメータを消去する、RCシャットダウン764が実行される。
【0142】
[修正されたバッファコントロール]
各フレームのためのdelta_qpを正確にコントロールすべく、バッファコントロールの代替方法が開発されている。ここで、主要な思想の1つは、バッファインクリメントを使用する代わりに、このアルゴリズムに対する他の複数の追加項目に加え、フレームQpを制御するための推定されるバッファステータスを直接使用することにある。この修正は、デルタQpの判断のためのアルゴリズムおよびその後のフレームQpの計算を置換または修正する。
【0143】
各フレーム後、バッファステータスが更新されるので、任意のフレームにおけるバッファコントロールについて、この修正は現在のSGOP内でまだコードされていない複数のフレームに対し適用される。よって、現在のPqpおよび複数の推定モデル(複数の異なるフレームタイプおよびランク)を使用し、全buf_incrが現在のSGOP内でコードされていない全フレームに対し、推定される。はじめにバッファインクリメントを設定すべく、バッファインクリメントは次のように計算される。
【数53】
式(53)
次にSGOP内の全フレームに対し、
【数54】
式(54)
式中、fr_est_bitsは、複数の初期フレームと同様の複数のビット推定を持つ、複数のビット率モデルまたは複数の線形推定モデルを使用する、現在のフレームのための推定されるビット数である。現在のフレームタイプおよびランクに対応する時間的な空間複雑度およびQpは、式(4)を使用し、現在のPqpから導き出される。現在のバッファ充填量がbuf_fulの場合、同一Pqpで継続する、予想されるバッファステータス(buf_est)は、次のようになる。
【数55】
式(55)
【0144】
式(37)から(40)までと同様、バッファ推定レベル(buf_estl)は、同一テーブル(図21)からの現在のレベル(buf_estl)に対するバッファ推定(buf_est)レート閾値に基づいて判断される。 式(42)から(48)までと同様、vbv_deltaは次のように計算される。
【0145】
vbv_deltaが適用される場合、2つのケースがある。1つは、VBVが過剰消費されることになる(buf_est >= buf_mop)の場合、あるいはVBVが過少消費されることになる(buf_est < buf_mop)の場合である。VBVが過剰消費される第1のケースにおいて、2つのサブカテゴリが存在する。
【0146】
第1のサブカテゴリ、incr_rate < (-rate_thr)では、バッファが急速にデクリメントする。
【数56】
式(56)
あるいは、第2のサブカテゴリにおいては、バッファがオーバーフローする。
【数57】
式(57)
【0147】
しかしながら、(buf_est < buf_mop)である場合の第2のケースにおいて、VBVが過少消費されるとき、ここでも同じく、2つのサブカテゴリが可能である。第1のサブカテゴリ(incr_rate > (rate_thr))において、バッファが急速にインクリメントする。
【数58】
式(58)
あるいは、ここで第2のサブカテゴリにおいても、バッファがオーバーフローする。
【数59】
式(59)
次の場合を除き、これら複数の用語が上記のように定義される。最終的なフレームQpは式(34)から(36)と同様に導き出される。
【0148】
この修正されたバッファコントロールのための複数の主要なレートコントロールパラメータは、(1)いつvbv_deltaおよびbuf_wtを適用するかを含む。最初のパラメータについて、量子化変化は、バッファステータスおよびバッファの変化の現在のレートに基づいて、十分適切に制御されてよい。buf_estlがゼロに近い場合、あまり多くの制御は必要とされない。buf_estlが、シーンの複雑度の変化に起因し、この動作ポイントから離れるにつれ、vbv_deltaの適用される頻度をコントロールすべく、コントロールパラメータが使用されてよい。buf_estl、フレームタイプ、およびランクに基づく複数の異なる基準が使用されてよい。
【0149】
第2のパラメータについて、Buf_wtがdelta_qpの大きさを判断する。特に、Buf_wtが量子化適応機能をコントロールする。繰り返しになるが、buf_estlに基づき、時折、量子化は急速に増加または減少する必要があってよく、複雑度によって、他の複数の場合においては、その逆となる。このパラメータは、複数の異なるフレームに対し適用される複数のデルタQpの大きさを決定する。vbv_deltaについて言及したように、このパラメータはまた、buf_estl、フレームタイプおよびランクに基づく、複数の異なる基準を使用し、モデル化され得る。
【0150】
別のアプローチとして、このモデルは、マルチスレッディングとともに効率的に使用され得る。複数のレートコントロールバッファおよび統計の適切な更新を可能にすべく、複数の重要なセクションを使用して、レートコントロールおよび複数の更新呼び出しのみが配置される必要がある。マルチスレッディングに関し、コーディング順序およびラグはランダムであるので、性能はシングルスレッドの場合から、多少異なる可能性がある。
【0151】
[1パスCBRアルゴリズムの概要]
このセクションは、簡単にアルゴリズムフローについて記載し、概して上記の図7を参照する。
【0152】
1.RC初期化:複数のRCパラメータを初期化する。
2.RCスタートアップ:複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ(複数のバッファ、複数の推定モデル等)を複数の適切な値に設定する。ビットレートおよびシーケンスの解像度に基づいて、複数の初期のQpが所定のテーブルに基づいて導き出される。
3.Pic RC:これは、各フレームのエンコーディング前の、現在のフレームQpを決定する、フレームレートコントロールである。
A.平均的な複雑度:pdistanceモジュール内でこれまでに複数のバッファ内に読み込まれたすべての将来の入力フレームに基づいて、平均時空複雑度を計算する。
B.複数の静的/空白シーンのチェック:シーンが静的または一連の空白のフレームの場合、既定の固定Qpが使用される。たとえ、これがシーンの途中で発生した場合であっても(例えば短時間の間、シーンが静的/空白になるとき)、複数の最後の安定状態Qpが、これまでの全フレームに対し使用され、それらは複数の空白/静的フレームとして検出される。
C.フレームの複数のQp制限:
i.シーケンスの開始:それがシーケンスの絶対的開始である場合、複数の実験に基づいて作成された初期のQp推定テーブルが使用され、複数の境界Qpを導き出す。このテーブルは、複雑度、ビットレート(bpp)およびZERO_RANKのフレームQpのマッピングであり、特定のターゲットビットレートを生成可能な計算された平均複雑度を有する、完全なシーケンスのための中間のZERO_RANKのP‐ピクチャQpの予測を試行する。対応する複数の所定のテーブルから複数のQp制限値も導き出される。
ii.何らかの初期の履歴の構築後:平均的な複雑度に対し消費された過去の全ビット数および使用された平均Qpに係るいくらかの履歴を有するゆえ、過去の統計に対する現在のフレームを含む、予想される複雑度および複数のビットに基づき、新しいフレームに対するQpの予測を試行する。過去の統計に対する現在のフレームは、現在のフレームを含む全ビット消費量をターゲットレートに近付け得るものである。複数のQp制限値が、標準のP対IおよびP対FのQpマッピングを使用するこのQpから導き出される。
iii.既定:上記(ii)のケースは、現在のフレームの複雑度およびこれまでの実際のビットレートがこれまでの平均的な複雑度およびターゲットビットレートにそれぞれ近い場合にのみ使用される。他の任意のケースにおいては、既定のQpがこれまでの平均Qpとなり、複数のQp制限値は、標準のP対IおよびP対FのQpマッピングを使用するこのQpから導き出される。
D.フレームQp:
i.シーケンスの開始またはシーンの変更:フレームQpは、平均的な複雑度、ターゲットビットレート(bpp)および多くの実験に基づいて作成されたQpモデリングに基づいて、導き出される。このQpは、前のセクションCで導き出された複数の制限値に規制される。時折、モデルは開始(複数の空白のフレーム等)の異常な複雑度に起因して、複数の誤ったQpを予測する可能性があるので、これは必要である。
ii.バッファコントロール:任意の他のフレームについて、バッファコントロールはフレームQpを決定する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Qpが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを動作ポイントに近づける現在の中間Qpに対し、適用される必要のあるデルタQp値を導き出したいと考える。これは以下のような一連の段階において導き出される。
a.バッファ推定およびバッファインクリメント:複数のバッファの現在の状態について、複数のQpおよび複数の推定モデルは、現在のSGOPの終了において、バッファステータスを予想する。SGOPは、将来のZERO_RANKフレームから、過去のZERO_RANKフレームに後続するフレームまでの一連の複数のピクチャである。また、現在のSGOP内のコードされる全フレームに対し、これらのフレームが複数のQpの現在の動作セットを使用してコードされる場合、バッファインクリメントを計算する。
i.利用可能な履歴:十分な履歴が複数のビット推定モデルに構築されると、フレームがその複雑度に対し消費することとなるビット数を推定するためにこれらが使用され得る。フレームタイプおよびランクに対応する現在のQpがフレームで使用される。
ii.履歴なし:あるいは、複数の実験から導き出されたいくつかの割合モデルが使用され、特定の複雑度およびQpを持つ複数のフレームビットを推定する。これらのビット割合モデルは、I対Pビット率、P対Fビット率等である。
b.複数のバッファレベルインデックス:現在のバッファステータスが中間動作ポイントを下回るまたは上回るかどうかに基づいて、現在のバッファおよび複数の推定されるバッファレベルが、−10から+10までのスケールの複数のインデックスにマッピングされる。
c.バッファインクリメントレートおよびその閾値:平均バッファレベルに対する現在のフレームインスタンスにおけるバッファインクリメントレートを推定する。現在のバッファレベルにより、所定のテーブルは、このバッファインクリメントに対する閾値を付与する。このことは、当該テーブルが、バッファが充填量のその現在のレベルにおいて許容可能な、フレームインスタンスの最大インクリメントを付与することを意味する。
d.デルタQp計算:デルタQpの2つの係数が導き出される。1つは、バッファの現在の状態に対応し、もう1つは現在のシーンの複雑度に対応する。デルタQpは、これら2つのパラメータの組み合わせに基づいて、複数の異なる値を仮定し得るゆえ、これら2つを別個に処理する必要がある。
i.VBVデルタ:インクリメント/デクリメントのレートが、現在のバッファレベルの許容閾値を超える場合はいつでも、バッファステータスによるデルタQp重み付け係数が適用される。現在のバッファレベルに基づいて、重み付け係数が再度導き出される。
ii.複雑度デルタ:現在のシーンの複雑度による、デルタQp重み付け係数である。これは、VBVデルタと比べ、より小さな重み付けを有する。これは、将来の複雑度を含むべく、導き出される。
iii.デルタQp:現在の中間Qpに比例して、上記両方の係数が組み合わされて、単一のデルタQp値とされる。
e.フレームQp計算:上記のデルタQpを現在の中間Qpに追加し、かつセクション(c)で導き出される複数の境界Qpに制限することで、フレームQpが導き出される。
4.Pic RCの更新:これは、現在のフレームの複雑度、Qpおよびビット数に基づいて、各フレームエンコードの終了において、バッファステータスおよび複数の推定モデルを更新する。
5.RCシャットダウン:複数のレートコントロールパラメータを消去する。
【0153】
[2パスVBRレートコントロール]
図22Aから22Bを見ると、2パスの可変ビットレート(VBR)アルゴリズムまたは処理2200が示されており、本開示の少なくとも一部の実装に従って配置されている。処理2200は、2202から2248までの番号が一様に付けられた、1または複数の動作によって示される、1または複数の動作、機能、またはアクションを含んでよい。処理2200は、NGVコーデックに追加され得る2パスレートコントロールモードを形成してよい。非限定的な例として、処理2200は、図1のエンコーダシステム100、レートコントロール500、および/または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムの追加の部分によって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【0154】
この処理を実装すべく、第1の分析パスは一例において、コマンドラインパラメータ-bm 3で、有効化されてよい一方で、レートコントロールを備える第2のパスは、コマンドラインパラメータ-bm 2で有効化されてよい。RCスタートアップ処理は、スタートアップ処理702と同様、2202によって実行されてよい。
【0155】
ここで詳細については、2パスVBR処理は、可変ビットレートを備える大きなバッファとして動作する、固定ビットレートに使用される固定のチャネルバッファを許容する。これは、2つのパスを伴い、コードされる完全若しくは全体、あるいはほぼ全体のフレームシーケンスに対し、できる限り高速に、完全な第1のパス分析2204を実行することで達成される。次に、第2のパス分析が完全なフレームシーケンスに対し、実行される。第1のパス内で、完全なシーケンスが既定の固定量子化(CQ)モードでエンコードされる。特に、第1の分析パスは、動作2206で判断される、平均的な複雑度、ターゲットビットレート(bpp)およびQpモデリングに基づいて、内部Qpを判断することを含む。換言すると、1形態において、第1のパスの初期のQpは、複数の所定のテーブル(図12および13)および上記の対数の式(7)を使用して、初期の既定のQpinter-q[0]を取得する1パスCBR処理と同様に導き出される。これは、上記の通り、複数のQp制限値を判断することを含んでよい。フレームシーケンスのための階層構造内の複数のランクの各々に対する複数の既定のQpは、上記の式(4)によって計算され得、ランクごとのこれらの定数値は、第1のパス分析のための結果的に得られる複数のQpと考えられる。
【0156】
第1のパスの時間を減少させることが重要であるので、第1のパス分析は、分析のためのビデオまたは複数のフレームのサイズを減少すること、および一形態において、第1のパスの時間を減少すべく、複数のフレームを均一に減少することを含んでよい。これは、フレームまたはビデオサイズを、フレームの完全なサイズの1/4等、完全なサイズに対する割合に減少させることで達成されてよい。この場合、分析されるフレームのビット数は、例えば、4ピクセルの各2×2グループの1ピクセルのみが分析されるよう、サンプリングサイズを減少することで減少されてよい。その後、複数の結果が、第2のパスの完全なサイズのフレーム(あるいは後述のようにスケールされたフレーム)に適用されてよい。
【0157】
固定フレームQp、複数のビットレート、複雑度等の複数のフレームレベル統計、すなわちメタデータが、stat(メタデータ)ファイルに書き込まれる2208。このQpおよびメタデータについて、システムは次に、前もって、どの複数のフレームがビジー(静的に対する動的)であり、どの複数のフレームが複雑または問題があるかを認識する。一形態において、レートコントローラ500は、これらの対応する第1のパス分析計算を実行すべく、コンポーネント508、510および512を備える第1のアナライザ502を有してよい。よって、一形態において、第1のパス分析は、複数の初期の既定のQpを用いてエンコーディングを実行してよく、それで十分である。別のいくつかの形態においては、どの複数のフレームが、シーケンス内の他の複数のフレームより、より複雑である(またはより多くのビットを使用する)かを判断すべく、複雑度およびフレーム毎のビット数(または換言すると、bppおよび/またはビットレート)の判断だけで十分である。よって、第1のパス分析について、複数の良好な品質のイメージのための完全なエンコーディングは不要であり、良好なまたは高品質のエンコーディングはスキップされてよい。
【0158】
第2のパス分析2210は、一例において、エンコーディングに使用される複数のフレームQpを形成するための第2のパスアナライザ504によって実行されてよい。はじめに、第1の分析パス内のstatファイル内に書き込まれた、複数の異なるフレームレベルのstatが、複数のフレームバッファ内に読み取られる2212。第2のパス分析の複数の計算を開始する前に、全体のビットレートをターゲットに収束させる、各フレームのビットターゲットを導き出すべく、シーケンス内の全フレームに対し、レートコントロール分析が実行される。第1のパスstatに基づいて、ターゲットビットレートに導く、第2のパスの固定Qpを判断すべく、当該アルゴリズムが使用されてよい。キーフレームブースティングおよび(時間的)複雑度マスキングから導き出される、複数のデルタQp係数を使用し、適応量子化が複数のフレームQpにわたり適用される。
【0159】
第2のパスのコーディング効率を向上すべく、各フレームのビット数がスケールアップまたはダウン2213され、フレーム毎のビット数のターゲット数と同一の全ビット数を生成する。これにより、さらなる所要時間の必要性およびエンコーディング中の複数の複雑な変換計算を回避する。スケール係数は、ターゲットビットレートおよび第1のパス分析で生成されたビットレートに基づいて導き出される。このスケール係数は、各フレームに均一に適用され、フレームのビットターゲットを導き出す。相対的なビット配布は、変更されないが、全体的なビット配布は、この段階によって、スケールダウン/アップされる。
【数60】
式(60)
式中、total_ns_bitsは、各フレームの非スケーラブルビット総数(複数のヘッダ等)であり、target_total_bitsは、スケーラブルおよび非スケーラブルのビット数を含むフレームのためのターゲットビット数であり、1pass_total_bitsは、第1のパス分析内で導き出されるフレームの現在の実ビット合計数である。シーケンス内の各フレームに対し、以下を使用し、スケールされたフレームサイズが導き出される。
【数61】
(式61)
式中、nsbitsは非スケーラブルなビット数であり、frmbitsはフレームのスケーラブルな(イメージ)ビット数である。
【0160】
第2のパス内のエンコーディング品質を向上するために各フレームのビットターゲットを修正すべく、適応量子化2214を実行するための時間的適応制御514が使用されてよい。時間的適応制御514は、後述のキーフレームブースティングを実行するユニット516、時間的複雑度マスキングを実行するユニット518、およびQp係数スムージングを実行するユニット520を含んでよい。
【0161】
低い複雑度の複数のフレームの量子化を変更することなく、低い複雑度を持つ複数の静的シーンおよび/または複数のシーンの品質を上げるべく、キーフレームブースティング2216が実行されてよい。これは、通常より低いQpを備える、複数の特定のキー(主要な)となるI‐ピクチャを提供することで達成される(それにより、I‐ピクチャのより詳細かつより高品質を保持する)。複数の低い複雑度のシーンにおいて、システムが複数の追加ビットを費やすことで、複数のI‐ピクチャの品質を保持する場合、これによって、他の複数のフレームは粗く量子化されるにもかかわらず、当該他の複数のフレームの品質を向上させつつ、他の複数のフレームのビット数を節約することになることがわかった。これは、複数のスキップブロックの高度な選択によるもので、複数のフレームの残余にわたり、複数のI‐ピクチャの品質を直接伝達する。
【0162】
ブースティングするためのシーンの選択については、シーンの複雑度はビット割合に基づいて検出され、Qp重み付け係数は各GOP内のI‐ピクチャのために導き出される。
【0163】
複数の低い複雑度のシーンでのキーフレームブースティングのために付与される追加の複数のビットを含めた後、各フレームのビットターゲットは、次のように再計算される。I‐ピクチャkの後の各フレームjについて、fs[j].bits < (fs[k].bits/2)の場合。
【数62】
(式62)
fs[j].bits < (fs[k].bits/3)の場合、
【数63】
式(63)
式中、fs[j].bits およびfs[k].bitsは、そのフレームのビット数でのフレームサイズを意味し、key_scale_factorは1.0に初期化される。キーフレームの追加ビット数は、次の式を使用し、導き出される。
【数64】
式(64)
各フレームのためのscaled_bitsは、これらの追加のキーフレームビットを構成すべく、再計算される。
【数65】
式(65)
式中、scaled_total_bitsは、フレームシーケンスのスケーラブルなビット合計数である。各フレームに対し再び、scaled_sizeが再計算される。
【数66】
式(66)
【0164】
時間的複雑度マスキング2218は、ビットシャフリングを使用し、複数の高い複雑度のシーンからの複数のビットを、複数の低い複雑度のシーンにシフトすべく、ビットシャッフリングを使用する。複数の心理視覚的マスキングコンセプトに従って、複数の高い複雑度領域に対し、複数の低い複雑度領域で使用されるビットごとに、より高い品質が得られる。よって、複数の高い複雑度領域から複数の低い複雑度領域へと複数のビットをシャッフリングすることで、エンコーディングの全体的な品質が向上する。これは、一例において、すべての残りの非キーブーストされたフレームに対する複数の時間的な重み付け係数を伴ってよい。それは、平均(相対的タイプおよびランク)に対するビット数の複数の相対的割合を使用し、導き出されてよい。
【0165】
より具体的には、フレームシーケンスまたはシーン内の各フレームタイプおよびランクの組み合わせ(複数の0+3レベルを持つF‐ピクチャピラミッドのためのI0、P0、F1、F2、F3、並びに複数のI、P、およびFピクチャ等)について、複数の個別の平均サイズおよび全ビット数に対するビット数の複数の相対的割合が計算される。特定のタイプおよびランクのシーケンス内の各フレームについては、scaled_size < scaled_avgの場合、
【数67】
式(67)
scaled_size > scaled_avgの場合、
【数68】
式(68)
式中、scaled_sizeは、フレームのビットサイズであり、scaled_avgは、分析されているフレームのシーケンス内の各タイプ‐ランクのための平均サイズであり、はじめにscale_factor_spend = 0.1で、はじめにscale_factor save = 0.2である。これにより効率的に、はじめにフレームの実際のサイズおよび平均化されたサイズ間の差分の約10または20%が取られ、その差分をフレームサイズに追加する。
【0166】
複数のビットのシャッフリング後、複数のフレームターゲットサイズが上記のターゲットにもう一度リスケールされる。
【数69】
式(69)
再び、各フレームについて、scaled_sizeが再計算される。
【数70】
式(70)
【0167】
一例のアプローチとして、このターゲットサイズ(target_size)が、第2のパスエンコーディング内の各フレームのターゲットフレームサイズとして設定される。
【0168】
フレーム品質を向上させるための第3の技術としてのQp係数スムージングが、以下説明される。2パスVBRレートコントロール処理の修正版である。
【0169】
あるいは、処理はその後、各フレームのフレームQpを推定してよい。各フレームについて、レートコントロールは、次を使用し、各フレームのエンコーディング開始時にフレームQpを判断する。
【数71】
式(71)
式中、epfは、フレーム毎のエラーであり、一例において、epfは全ビットエラーの3%である(各フレームのエンコーディング後の更新されたtotal_act_bitsとtotal_scaled_sizeとの間の差分である)。epcは現在のフレーム毎のエラーで、この場合、全フレームタイプおよびランクの全ビット数に対する現在のフレームタイプおよびランクの重み付けである。
【0170】
この新しいtgt_sizeビット数に対応する新しいフレームのqpは、次の関係を使用し、1パスstatと比較して導き出される。
【数72】
式(72)
式中、est_qpは、フレームの推定されるQpで、現在のフレームをエンコードするのに使用される。式中、1pass_bitsおよびand 1pass_qpは、第1のパス分析からの各フレームのためのビット数およびQpである。各フレームのエンコーディング後、全ビットエラーが更新され、次の複数のフレームQp計算において使用される。
【数73】
式(73)
【0171】
別の代替として、修正された第2のパスまたはレートコントロールパスが使用されてよい。上記セクションで言及した第2のパスアルゴリズム分析(第1のパス分析に対し)は、ターゲットビットレートからのより広範な偏差および、複数の複雑なシーケンスのための固定Qpエンコーディングに対し、複数のピーク信号対雑音比(PSNR)の損失をもたらす可能性がある。より具体的には、前のアルゴリズムでは、キーフレームブースティングおよび(時間的)複雑度マスキング(ビットシャフリングを使用して)後、各フレームの第1のパスのビット数が、ターゲットにスケールされる。よって、フレームQpはこれらのスケールされた複数のフレームサイズから推定される。階層的予測構造を配備することで、これは第2のパス内の複数のQpの広範な変化、および複数のQp内の階層構造の損失につながっていた。よって、2パスのアルゴリズムの第2のパスは、次のように修正され、さらにずっと優れた性能を実現する。修正されたアルゴリズムは、第1のパスstatに基づくターゲットビットレートに導く、固定Qpを第2のパスに対し判断する。キーフレームブースティングおよび(時間的)複雑度マスキングは、選択された固定Qpにわたり、適応量子化を使用して組み込まれる。キーフレームブースティングおよびフレーム複雑度の変化は、フレームQpに適用可能なデルタQp係数(qp_deltaf)にマッピングされる。修正されたアルゴリズムは、スケーリング2213を省略し、これについては次のセクションで詳細に説明される。
【0172】
複数の低い複雑度または静的シーンのキーフレームブースティング2216について、この修正された代替においては、key_scale_factorが前のセクション(式(62)から(63))と同一または類似の方法で導き出される。シーンが低い複雑度のシーンまたはシーケンスであるかどうかの判断は依然、シーケンス内の複雑度の割合を分析することによって実行されてよいが、ここにおいて、これは、複数のルックアヘッドフレームの各々に対し判断される複数の複雑度を含む。しかしながら、ここで、key_scale_factorは次のようにデルタQp係数にマッピングされてよい。
【数74】
式(74)
【0173】
適応量子化を使用するこの修正された代替における、時間的複雑度マスキング2218については、各フレームタイプおよびランクの組み合わせのために、複数の平均サイズの各々および全ビット数に対するビット数の相対的割合が計算される。特定のタイプ(t)とランク(r)のシーケンス内の各フレーム(i)について、fs[i].bits < scaled_avgの場合、
【数75】
式(75)
fs[i].bits > scaled_avgの場合、
【数76】
式(76)
式中、fs[i].bitsは、フレームスケーラブルなビット数、およびscaled_avgは、フレームシーケンス内の複数の特定タイプおよびランクのフレームにわたる平均的なスケーラブルなビット数である。ここで、複数の時間的な複雑度が、複数のQpデルタ係数にマッピングされ、それは、フレーム対平均ビット数の割合を、フレームランクに応答できる能力において提供する。よって、Qpデルタ係数は、フレームQpのスケーリング係数として使用可能である。
【0174】
Qp係数スムージング2220については、同一タイプおよびランクの複数の連続するフレームに対する複数のQp係数は、複数の連続するフレーム(同一タイプおよびランクの)間のQpの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト(平準化)される。広範な変化は、品質の急激な変化をもたらし得る。
【0175】
選択されたシグマのために、
【数77】
式(77)
式中、sigmaは現在のフレームのいずれかのサイドで、3タップを使用すべく、1.5として選択される。特定のフレームについて、上記フィルタは、いずれかのサイドにおいて、複数の(filter_size/2)サンプルを持つ一連のサンプルに対し適用される。
【数78】
式(78) 式中、dは参照サンプルに対する現在のサンプルのインデックスである。
【数79】
式(79)
【数80】
式(80)
式中、qおよびsumは、各参照サンプルに対しゼロに初期化される。最終的なqp_deltafは次のように導き出される。
【数81】
式(81)
【0176】
第2のパス分析内の次の動作2222は、各フレームのためのターゲット固定中間Qpおよびビットターゲットを検出することである。一形態において、この動作は、固定ターゲットQpジェネレータ522によって実行されてよい。この動作において、処理は、可能なQp選択肢のセットの反復を使用し、第2のパスのための最善なQpを検出する。最善なQpは複数の前のセクション(例えば、式(74)から(75)および(81))で導き出される複数のデルタQp係数を適用する一方で、ターゲットビットレートをもたらし得るものである。この反復は、動作2224から2232によってカバーされる。これは、各フレームのためのターゲットQpおよびビット数をもたらす。
【0177】
一アプローチにおいて、複数のQp選択肢のセットは、128である、可能な限り最も粗いQpを設定2224することで開始し、0.25である、可能な限り最も微細(最小)なQp段階サイズまで、バイナリオーダ(段階を各反復の半分に分割する)で進む。よって、次のようになる:
【数82】
式(82)
target_bitsより少ないビット数を付与するそれらの段階をスキップする。
【数83】
式(83)
式中、target_bitsは、ターゲットビットレートから判断される。反復内の各Qpについては、expected_bits合計がこの新しいQpを使用し、各フレームのexpected_frame_bitsを計算し、それらを分析中のシーケンス内の全フレームに対し、累積することで計算される。expected_bitsは、次のように計算される。各フレームに対し、まず、現在のフレームタイプおよびランクに対応するscaled_qが次のように導き出される。
【数84】
式(84)
式中、rankQP[t][r]は、複数の初期の既定のQpである。このscaled_q[i]を使用し、現在のフレームに対し予想されるビット数は、次のようになる。
【数85】
式(85)
【数86】
式(86)
target_bitsに最も近いビット数を付与するQpが第2のパスの最善の中間Qpとして選択される。最善のQpを見つけるための反復の最大数(Qp段階サイズの見地より)は、次の式によって、制限される。
【数87】
式(87)式中、2は、Qstep = 0.5およびQstep = 0.25に対応する2つの追加的な段階を意味する。
【0178】
より一般的に言うと、はじめに、段階(Qstep)は256に、Qpは0に設定される。当該段階は0.5を乗じされ、新しい段階として設定される。次に、Qpが当該段階に追加され、新しいQp(現在、値128において)として設定される(動作2224および上記式(82))。推定合計ビット数が、分析中の選択されたフレームに対し、計算2226される(式(83)から(86))。適応量子化に加え、ピラミッドランクおよびフレームタイプの両方が、式(84)からの推定合計ビット数の判断において要因とされることに留意されたい。その後、0.25の段階がまだ到達されていないかどうか判断される(2228および式(87))。到達されていない場合、その後、処理は、推定される(予期されるとも言う)ビット数が、ターゲットビット数(式(83))より少ないかどうかを確認すべく、チェック2230する。そうである場合、処理は、直ちに最後の段階値に0.5を乗じ、その後、新しい段階をQpに追加することにより、次の新しい段階を取得する動作2224に戻り、処理は再びループされる。推定されるビット数がターゲットビット数より大きい場合、まず、段階はQp(2232)から減算された後、新しい段階およびQpを設定すべく、処理はループバックされる。Qpが、ターゲットビット未満からターゲットビット超の間で変動するよう、これらの動作が設定されており、固定ターゲットQpがターゲットビット値近くに落ち着くまで行ったり来たり繰り返す。段階が0.125に到達すると(0.25未満の1段階)、ループは継続されず、複数のフレームのためのターゲットビット数に近い、複数の推定される固定中間Qpが、第2のパスのエンコーディングおよびビットレートコントロールのために渡される。
【0179】
処理200はその後、第2のパスエンコーディングおよびビットレートコントロール2234で継続し、第2のパスエラー訂正およびビットコントロール506によって実行されてよい。この動作は、各フレームのエンコーディング前のフレームレートコントロールであり、当該フレームレートコントロールは、最終エラービット数の配布、およびターゲットビット数および最終的な現在のフレームQpの計算を含んでよい。固定ターゲットQPに対する初期の2パスアルゴリズム(動作2222)が、各フレームのための推定されるscaled_qおよび推定されるQPを付与する一方で、複数の予測エラーおよび複数のビットレート偏差を補償すべく、第2のパスの実際のエンコーディング中に、各フレームに対し推定されるQpは依然訂正される必要がある。動作2222での推定されるターゲットビット数および固定ターゲットQpの計算は、第2のパス分析2210というよりむしろ、第2のパス分析2210に追加される、第2のパスエンコーディングおよびビットレートコントロール2234の一部として考えられてよい。エラー訂正は次のように、適用される。
【0180】
予測エラー訂正2236は、これまでにエンコードされた、および初期の第2のパス中に計算された(using expected_frame_bitsを使用して)全フレームの予想されるビット総数からの実際のビット総数の偏差に対する補償を含む。補償は、次のように現在のフレームQpに適用される。一時的なバッファは次のように初期化される。
【数88】
式(88)
【数89】
式(89)
式中、total_expectedBitsは、シーケンス内の全フレームのexpectedBitsの総数であり、expectedBits_sumは、これまでにエンコードされた全フレームのexpectedBitsの総数である。
【数90】
式(90)
【数91】
式(91)
式中、tgt_errはビット総数エラーであり、est_qはビット総数エラーに対し調整された推定されるQpである。式中、scaled_qは、式(84)で導き出される現在のフレームのQpであり、actualBits_sumは、これまでにエンコードされた全フレームの実際のビット総数である。一アプローチにおいて、この補償は、複数のフレームに対し、選択的に適用されてよく、それによって、ベース(ランク0)における若しくはベース(ランク0)により近い箇所における複数のフレームに、より高い優先度が付与されるといった、ランクに従った優先度を付与する。
【0181】
ターゲットビットレートからの実際のビットレートの偏差が、より最終的なターゲットQpを導き出すべく、推定されたQpを調整することで補償されるよう、ターゲットビットレートエラー訂正2238も実行されてよい。当該偏差は以下のように補償される。
【数92】
式(92)
式中、est_qは、ターゲットビットレートエラーのためにここで調整される推定されるQpであり、式中、targetBits_sum およびtotal_nsBitsはそれぞれ、ターゲットビット総数、およびこれまでにエンコードされた各フレームの非スケーラブルなビット数である。現在のフレームのターゲットビット数は、第1のパス分析からのビット推定モデルを使用する、各フレーム(式(92))のための新しい推定されるターゲットQpを使用し、計算2240される。
【数93】
式(93)
【0182】
処理は次に、フレームをエンコードしてよく、各フレームの終了において、複数のレートコントロールフレーム統計を更新2242してよい。各フレーム(i)のエンコーディング後、複数の異なる累積の統計が次のように更新される。
【数94】
式(94)
【数95】
式(95)
【数96】
式(96)
【数97】
式(97)
【0183】
フィールドの終了(EOF)チェックが実行2244され、GOP、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でなく、それが分析中でない場合、第2のパスエンコーディングおよびビットコントロール処理2234が再実行される。EOFに達したら、複数のレートコントロールパラメータを消去する、RCシャットダウン2246が実行される。
【0184】
[2パスVBRアルゴリズムの概要]
このセクションは、概して図22Aから22Bを参照しつつ、アルゴリズムフローを簡潔に記載する。
【0185】
1.分析パス:完全なシーケンスが既定のCQモード内の第1のパスでエンコードされる。分析パスInter Qpが、平均的な複雑度、ターゲットビットレート(bpp)および、多くの実験に基づいて開発されたQpモデリングに基づいて導き出される。フレームQp、複数のビット、複雑度等の複数のフレームレベル統計は、stat(メタデータ)ファイルに書き込まれる。
2.第2のパス:分析パス内のstatファイルに書き込まれた複数の異なるフレームレベルstatが、複数のフレームバッファ内に読み取られる。第2のパスの開始前に、各フレームのためのビットターゲットを導き出すべく、レートコントロール分析がシーケンス内の全フレームに対し行われる。ビットターゲットは、全体のビットレートをターゲットに収束させるものである。当該アルゴリズムの主要な思想は、第1のパスstatに基づくターゲットビットレートに導く、固定Qpを第2のパスのために見つけ出すことにある。キーフレームブースティングおよび(時間的)複雑度マスキングから導き出される複数のデルタQp係数を使用し、適応量子化がフレームQpにわたり適用される。
A.複数の低い複雑度または静的シーンのキーフレームブースティング:複数の複雑度の低いシーンにおける複数のキーフレームについて、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数のビット割合に基づいて検出され、Qp重み付け係数は各GOP内のI‐ピクチャのために導き出される。
B.ビットシャフリングを使用する時間的複雑度マスキング:同様に、全フレームの残りに対し、複数の時間的な重み付け係数が、平均(各々のタイプおよびランク)に対するビット数の複数の相対的割合を使用し、導き出される。
C.Qp係数スムージング:同一タイプおよびランクの複数の連続するフレームに対する複数のQp係数は、複数の連続するフレーム(同一タイプおよびランクの)間のQpの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト(平準化)される。広範な変化は、品質の急激な変化をもたらし得る。
D. 各フレームのためのシーケンスおよびビットターゲットの中間Qpの検出:この段階では、複数の可能なQp選択肢のセットで反復し、第2のパスの最善なQpを見つける。最善なQpは、複数の前のセクションで導き出される複数のデルタQp係数を、対応するフレームQpに適用し、かつ、各フレームのビット数を導くためのビット推定モデルを使用しつつ、ターゲットビットレートをもたらし得る。終了時、これは各フレームのターゲットQpおよびビット数を付与する。
3.Picレートコントロール:これは、各フレームのエンコーディング前の、現在のフレームQpを決定するフレームレートコントロールである。
A. 推定されるQp:初期の2パスアルゴリズム(動作2222)は、各フレームの推定されるQpを付与する。しかしながら、複数の予測エラーおよび複数のビットレート偏差を補償すべく、第2のパスの実際のエンコーディング中に、各フレームに対し、推定されるQpは訂正される必要がある。
B.予測エラー:これまでにエンコードされた全フレームの実際のビット総数と予想されるビット総数との間の偏差は、フレームQp上で補償される。
C.ビットターゲット:ターゲットビットレートからの実際のビットレートの偏差も、ターゲットQpを導くための推定されるQp上で補償される。
D.ターゲットビット数:現在のフレームのためのこのターゲットビット数は、ビット推定モデルを使用するターゲットQpに基づいて計算される。
4.Pic RC更新:これは、各フレームエンコードの終了において、現在のフレームQp、予想されるビット数、ターゲットビット数および実際のビット数に基づいて、複数の累積的なフレーム統計を更新する。
5.RCシャットダウン:複数のレートコントロールパラメータを消去する。
【0186】
[ルックアヘッドを備えた、1パスCBRレートコントロール]
図23を見ると、本開示の少なくとも一部の実装に従って配置された、ルックアヘッド処理2300を備えた、1パスCBRレートコントロールが示されている。処理2300は、2302から2364までの番号が一様に付けられた、1または複数の動作によって示される、1または複数の動作、機能、またはアクションを含んでよい。処理2300は、NGVコーデックに追加され得る、1パスのルックアヘッドレートコントロールモードを形成してよい。非限定的な例として、処理2300は、図1のエンコーダシステム100、レートコントロール400、および/または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムの追加の部分によって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。ルックアヘッドを備えた1パスCBRレートコントロールの多くの動作の複数の説明は、一形態若しくは別形態における、1パス処理700(図7)によって既にカバーされているか、または含まれており、これらの場合、説明はここで繰り返されない。複数の同一または類似の動作および/または両方の処理における複数のコンポーネントは、同様に番号が振られている(例えば、処理700のRCスタートアップの実行は動作702、処理2300では2302)。
【0187】
2パスレートコントロールは最善の品質を提供する一方で、2パスレートコントロールはまた、第1および第2のパス分析を形成すべく、完全なフレームシーケンスの2回の分析に起因する、大きな遅延を生じさせる。よって、この代替的な1パスCBRルックアヘッドレートコントロールモードが、品質、時間、および複雑度の見地から、1パスCBRおよび2パスVBR間の妥協として提案される。分析されている同一シーケンス内の現在のフレームに対する複数の将来のフレームの見地から、このモードは、部分的なルックアヘッドをシーンの複雑度および予備的な動き分析に対し提供する。これは、品質およびビットレートをより良くコントロールすべく、複数のルックアヘッドバッファを使用することで達成される。全体的なレートコントロールアルゴリズムは、1パスCBRレートコントロール(処理700)で言及したアルゴリズムと同様で、次の複数のセクションで概説する複数の修正がなされている。
【0188】
詳細について見ていくと、処理2300は、レートコントロールスタートアップの実行2302を含む、多くの動作について同様に進む。レートコントロールスタートアップの実行2302は、複数のRCパラメータの初期化および、複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ(複数のバッファ、複数の推定モデル等)を複数の適切な値に設定することを含んでよい。ビットレートおよびシーケンスの解像度に基づいて、複数の初期の既定のQpが所定のテーブル、および処理700に関する式(7)および(4)に基づいて導き出される。
【0189】
しかしながら、スタートアップ動作2302は、事前分析ルックアヘッドフレーム2303も含む。ルックアヘッドのため予め、ルックアヘッド待機時間またはバッファサイズを指定すべく、新しいコマンドラインパラメータ「-la」が追加される。既定で、ルックアヘッドサイズは0であり、この場合、コーデックは既定に従って動作する。ゼロ以外のルックアヘッド値が指定された場合、複数のルックアヘッドバッファが多くの入力フレームで埋められるまで、フレームエンコーディングは遅延される。一形態において、ピクチャの実際のエンコーディングのみが遅延されるが、フレームタイプの決定は、Pdistanceモジュールの既定の場合と同様に継続する。このレートコントロールモードの基本的アイデアは、現在のフレームの量子化を決定する前に、ルックアヘッドバッファ内のあらゆる将来のフレームの時間的な複雑度(および動きデータ)を予見することにある。このように、システムは、フレームの量子化を決定する前に、シーンの将来の複雑度(これまでに複数のルックアヘッドバッファが許容する)並びに過去の両方を考慮する。
【0190】
事前分析は、事前分析のためのルックアヘッドまたは複数の将来のフレームの選択を含み、事前分析は、分析およびコードされている現在のフレームの分析に使用される。ルックアヘッドは、一例において、0から250のルックアヘッドフレーム間の任意の値を取ることができ、ルックアヘッドは、非常に多くのフレームによって、入力‐出力ラグを増加させる。ルックアヘッドフレーム数はまた、別の複数の例において、最小1から4および最大30または120としてよい。選択されるルックアヘッドフレーム数は、アプリケーション(ビデオ会議等の場合にリアルタイムかライブか否か、あるいはライブTVショー等の若干の遅延、あるいはDVD記録のためといったような非ライブ)に依存してよく、その場合、リアルタイムにより近くなればなるほど、良好な品質のビデオのために選択されるルックアヘッドフレーム数は小さくなる。また、システムバッファサイズ(エンコーダにおける、あるいはデコーダにおける)は、処理可能なフレーム数を制限してよい。
【0191】
ルックアヘッドは、一形態において、複数の将来のフレームを参照する。将来のフレームは、現在のフレームに対し、どの種類の量子化(Qp)が使用されるべきかを判断するために事前分析される(参照される参照フレームグループとして表現されてよい)。よって、ルックアヘッドは単純に、将来いくつのフレームが参照されるかを参照する。それにより、将来に関する何らかの情報(例えば、複数の将来のフレームは動きにおいて類似であるかどうか、すなわちシーンが低速または高速に移動中かを通知する可能性のある)を把握する。このような情報は、どの程度正確(どの量子化値/品質レベル)に現在のフレームをエンコードするかを判断するのに役立つ可能性がある。例えば、フレーム内のシーン/ビデオオブジェクトの一部が低速に移動中(持続的)であれば、シーン(そのような複数のフレーム)のその領域は、高品質でコードされるべきである。というのは、当該フレームは更新する必要なく、他の複数のフレームに再利用(コピー)され得るからである。一方で、フレーム/シーンの一部が高速で移動中であれば、最高品質でのコーディングを保証しない可能性がある。というのは、持続性が短く、シーンはすぐに範囲外になるからである。
【0192】
1具体例において、フレーム番号4が複数のフレームシーケンス内で処理中の場合、フレーム0は最初のフレームであった。30のフレームのルックアヘッドを仮定すると、フレーム4のコーディングについては、フレーム番号34までの複数のフレームが読み取られ、シーン内の持続性の程度を判断すべく、これら30の追加のルックアヘッドフレームが使用される。シーン内の持続性の程度は、最高のエンコーディング品質を提供する可能性のある、空間的に異なるブロック/タイルベースの量子化マッピング(ピクチャ量子化とは異なるが、それに関連がある)の判断に導く可能性がある。一方で、30の将来のルックアヘッドフレームがなければ、将来の持続性を判断することは可能ではなかったかもしれず、現在のフレームは、特定領域に対し、品質はより良いかもしれないが、ほどほどの量子化(より精緻な量子化の代わりに)の使用をもたらしたかもしれない。
【0193】
事前分析は、複数の動き特性に加え、各ルックアヘッドフレームの複雑度を判断することを含んでよい。そのようなものとして、現在のフレームのグローバルピクチャベースの量子化マップ並びにローカルブロックベースの量子化マップを判断するためのオブジェクト検出等があり、それにより、フレーム、またはフレームセクションが、参照または複数の他のフレームに対するコピーとして再利用される可能性があるかどうかを考慮しつつ、最高品質を得る。
【0194】
Pdistance処理に関しては、pdistanceロジックに何の変更もなく、フレームタイプおよびランクの複数の決定は、上記で説明した通り発生する。前述の通り、フレームエンコーディングのみが遅延される一方で、ピクチャのルックアヘッド数は、複数のルックアヘッドバッファ内に累積される。追加の待機時間パラメータが各入力フレームに関連付けられ、各入力フレームは、一回における複数のpdistanceフレームのサブグループの表示順序でtrueに設定されている。各入力フレームに対し、ルックアヘッドバッファカウントがルックアヘッド値を超える場合、フレームタイプの決定は発生済みである。フレームエンコーディング決定は、この待機時間値に依存してよい。シーケンスがEOFに到達した場合、この待機時間値は、フレームエンコーディングの複数の決定において無視される。
【0195】
レートコントロールスタートアップが実行された後、ルックアヘッドを備えるピクチャレートコントロールが実行2303され得る。ピクチャレートコントロール動作703と同様、これは、各フレームのエンコーディング前のフレームレートコントロールであり、これにより、現在のフレームQpを判断する。
【0196】
また、処理2300は、処理700内の複数の動作と同一または類似の他の複数の動作を含む。処理700内の複数の動作は、処理700で十分説明済みである。例えば、平均時間的(および空間的)複雑度(TSC)の計算2304(複数のルックアヘッドバッファ内の複数の将来のフレームの入力に基づくことになるが)、複数のQp制限値の計算2306、およびバッファステータスを使用しないフレーム判断の複数の部分2314が挙げられる。フレーム判断の複数の部分2314には、シーケンス開始の複数の動作(2322から2326)および複数の空白若しくは静的シーン(動作2216から2220)などがある。これらの動作の説明は、ここで繰り返す必要はない。
【0197】
分析されるフレームシーケンスは、シーンの開始ではなく、かつ、空白若しくは静的シーンではないと判断されると、動作2300は、ルックアヘッドを備えるバッファステータスに基づき、フレームQpを提供する2327で進む。それは、一例において、本明細書で説明したように、バッファコントロール412によって実行されてよい。ここにおいて、バッファコントロールは、次の点を除き、複数の前のアルゴリズムと同一または類似である。異なる点は、複雑度デルタの導出およびルックアヘッドバッファ内の選択された複数の将来のフレームの分析である。これについて、後述する。検討するに、現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Qpが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを中間動作ポイントに近づける現在の中間Qpに対し、適用され得るデルタQpが導き出される。これは、次のように導き出される。
【0198】
各フレームのエンコーディング前に、バッファコントロールは、バッファモデル410、およびルックアヘッドバッファモデルであるこの場合、バッファ充填量ユニット414を一例において使用し、現在のフレームが、現在の中間Pqp(理想的なターゲットビットレートを提供するターゲットZERO_RANKP‐ピクチャ量子化(Qp))から、そのタイプおよびランクに依存する式(4)を使用して導き出されるQpでエンコードされている場合、バッファステータスを予想してよい。バッファオーバーフローまたはアンダーフローを回避すべく、推定されるバッファステータスに基づいて、現在のPqpは、未修整または修正済みのいずれかとされる。シーンの複雑度の変化に起因するバッファの揺らぎが存在する場合はいつでも、バッファコントロールは、現在のPqpをターゲットPqpに近くに保つべく、現在のPqpの変調を試行する。よって、バッファを中間動作ポイント(buf_mop)に保つことは、Pqpを、特定の複雑度のシーンに対する中間Qp動作ポイント近くに維持することと等しい。Pqpがバッファコントロールによって修正される場合はいつでも、複数の異なるフレームタイプおよびランクに対応するすべてのQpは、式(4)を使用して更新される。バッファコントロールは次のように動作する。
【0199】
図20を再度参照するに、バッファ初期化2329は、バッファ初期化730および式(27)から(30)および(32)に関し前述済みのものと同様であるので、ここでは繰り返さないが、平均バッファ充填量(avg_buf_ful)がここで判断される必要がない点が異なる。
【0200】
処理2300は、バッファビット数のルックアヘッドバッファ推定2331を継続する。ここで、処理は、次の点を除き、処理700およびビット推定732のものと同一または類似である。異なる点は、SGOPの代わりに、処理は複数のルックアヘッドバッファ内のすべての利用可能なフレームに対し適用され、ルックアヘッドバッファ内の複数の将来のフレームを含む、すべての利用可能なフレームのコーディングタイプが決定される。前と同じく、ビット数は履歴が存在するかどうかどうかの判断2334によって推定される(fr_est_bits)。履歴が存在しない場合は、ビット率推定方法2336を、履歴が存在する場合は、線形推定方法2338を使用する。ビット率推定方法2336および線形推定方法2338の両方が、現在のPqpから導き出されるQpに依存して、複数の初期(シーケンス開始/スタート)フレームに使用される。ここで関連する修正は、ビット数を推定すべく、各フレームのための複雑度デルタに使用される時間的適応制御中に、以下で導き出される複数のqp_deltaf係数を適用することである。現在のフレームシーケンス内でコード済みのそれらのフレームについては、それらの実際のビット数は、バッファ内で更新済みである。つまり、複数のバッファ、複数のQp、および複数の推定モデルの現在の状態に関し、バッファ推定の目的は、複数のルックアヘッドバッファ内のすべての利用可能な将来のフレームが、複数のQpの現在の動作セットを使用してコードされた場合、バッファステータスおよびバッファインクリメントを予想することにある。当該推定によって提供されるビット予測2340は、その後、バッファインクリメントおよびバッファ推定計算に対し利用可能になる。
【0201】
バッファインクリメントおよび推定されるバッファは、次のように計算2342される。ここで、バッファインクリメントは、ルックアヘッドバッファ内の全フレームに対し、buf_incr = 0である。
【数98】
式(98)
式中、fr_est_bitsは、前述した開始シーケンスフレームQp処理のビット率方法または線形推定方法を使用する、現在のフレームのための推定されるビット数である。式中、target_rateは、フレーム毎のターゲットビット数であり、その時空複雑度およびQpは、式(4)を使用して現在のPqpから導き出される現在のフレームタイプおよびランクに対応する。
【0202】
現在のバッファ充填量がbuf_fulの場合、同一Pqpで継続すると、予想されるバッファステータス(buf_est)は、次のようになる。
【数99】
式(99)
【0203】
これは、複数のルックアヘッドバッファ内の全フレームが、同一動作中間Pqpを使用して、コードされた場合のバッファステータスを示す。
【0204】
処理700と同様、バッファに対するビット予測が取得されると、および複数のバッファレベル、複数のインクリメント、および複数の閾値が確立されると、処理2300は、デルタQpの判断2344で継続してよい。デルタQpの判断2344は、Qpの最大調整を設定すべく、一例において、デルタQpユニット416によって実行される。詳細について検討するに、はじめにバッファ内の中間動作ポイントが選択される。例えば、式(27)で、buf_fullが、全バッファ(buf_max)の約40%レベルであるbuf_mopに設定される。現在のバッファ充填量(buf_ful)がこの動作ポイント(buf_mop)からそれる場合は常に、buf_fulを動作ポイントにゆっくり戻そうとする試行がなされるべきである。バッファの中間動作ポイント(buf_mop)に対応する、Pqp、すなわちPqp_mopのtめの中間動作ポイントが存在すると仮定できる。つまり、バッファコントロールの目的は、Pqpをこの動作ポイントに近く維持することにあり、Pqpがシーンの複雑度の変更に起因し、動作ポイントから大きくそれるときは常に、動作ポイントに到達すべく、Pqpが少量変調されてよい。
【0205】
しかしながら、複数の隣接フレーム間での、より大きい量子化段階は、品質における複数の視覚的変化を引き起こすことになる。よって、フレームからフレームにわたり、Pqpを複数の小さいデルタ値のターゲット動作ポイントに戻す試行がなされるべきである。よって、デルタ値は、Qpがフレームからフレームにわたり、どの程度変更可能についての制限値である。buf_fullが現在のバッファ充填量である場合、buf_estは推定されるバッファレベルであり、buf_incrはバッファ内のインクリメントであり、次に、vbvのためのdelta_qpが次のように導き出され得る。
【数100】
式(100)
ここで、
【数101】
式(101)
【0206】
デルタQp重み付け係数(vbv_delta_qpf)は、バッファ偏差による。これは、現在のバッファステータスに対応するdelta_qpfである。よって、上記のルックアヘッドを持たない1パスシステムの場合のように、バッファインクリメントと閾値を比較する代わりに、ここでは、これまでにエンコードされた複数のフレームのビットレートに基づく時間的な現在のバッファとエラー計算との間の差分に基づいて、vbv_delta_qpfが判断される。この現在のバッファ2345は、次のように計算される。一時的なバッファが初期化される:
【数102】
式(102)
【数103】
式(103)
式中、enc_orderは現在のフレームのエンコーディング順序番号であり、total_framesはエンコードされる複数のピクチャの合計数である。vbvデルタは次に、一例において、vbvユニット420によって次のように計算されてよい2347。
【数104】
式(104)
【数105】
式(105)
式中、tgt_errは、全ターゲットビット数と、これまでにエンコードされた複数の過去のフレームに起因する前のターゲットエラーを含む、推定されるビット数との間の差分として付与されるターゲットエラーである。修正されたPgp'は式(100)に従って計算2349されてよい。
【0207】
修正されたPqp'は次に、動作706および2306に関し記載したように、複数の連続するフレーム間の大きすぎる偏差を回避すべく、複数のQp制限値2351を受ける。
【数106】
式(106)
【0208】
その後、P Qpがフレームにおいて修正される場合は常に、複数の異なるランクに対応する複数のQpが式(4)を使用して更新されるよう、Qp更新2353が実行されてよい。現在のフレームタイプおよびランクに対応するQpが、フレームの実際のコーディングに使用される、現在のフレームのest_qpとして割り当てられる。
【0209】
これらの調整がなされた後、複雑度デルタが最新のQpに追加されてよい。具体的に言うと、一例において、複雑度デルタ(cplx_delta_qpf)は、cmplxユニット422によって計算されてよく、複雑度デルタ(cplx_delta_qpf)は、一例において、コントロール424によって実行されるルックアヘッド時間的適応量子化2355を含んでよい。2パスVBRレートコントロール(処理2200)で使用される時間的適応量子化の思想と同様、処理2300は、複数のルックアヘッドバッファ内の複数の将来のフレームの複数の複雑度を使用して、適応量子化を1パスCBRに組み込むことができる。キーフレームブースティングおよび時間的複雑度マスキングは、選択されたフレームQpにわたり、適応量子化を使用して組み込まれる。キーフレームブースティングおよび複数のフレーム複雑度の変化は、現在のフレームQpに適用され得るデルタQp係数に、マッピングされる。時間的適応量子化が次のように導き出されるdelta_qpfを使用し、現在のフレームに適用される。
【0210】
ルックアヘッドキーフレームブースティングユニット426は、複数の低い複雑度または静的シーン内でキーフレームブースティング2357を実行してよい。処理2200で説明した通り、複数の複雑度の低いシーンの複数のキーフレームについては、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数のルックアヘッドフレームの複数の複雑度割合および複雑度の複数の係数に基づいて検出される。Qp重み付け係数がI‐ピクチャに対し、導き出される。key_scale_factorは、前のセクション(式(62)と(63))と同様に導き出される。各フレームjについて、以降のI‐ピクチャkは、
【数107】
式(107)
式中、TSCは、分析されるフレームの時間的な空間複雑度である。しかしながら、フレームは次のようにデルタQp係数にマッピングされる。
【数108】
式(108)
【0211】
ルックアヘッド時間的複雑度マスキングユニット428は、時間的複雑度マスキング(あるいは単に複雑度マスキング)2359を実行してよい。時間的複雑度マスキング2359は、現在のフレームの複雑度を、複数のルックアヘッドバッファ内のすべての利用可能なフレームの平均的な複雑度に対し比較できる。複数のルックアヘッドバッファ内のすべての利用可能なフレームの残りに対する、複数の時間的な重み付け係数が、これまでに利用可能な全フレームの平均的な複雑度に対する、複雑度の複数の相対的割合を使用し、導き出される。はじめに、平均的な複雑度がルックアヘッド内の全フレームに対し、計算されるavgTSC。各フレームのデルタQp係数は、平均的な複雑度に対する複数のフレームの複雑度の相対的割合として計算される。
【0212】
複数のルックアヘッドバッファ内の利用可能なシーケンスの各フレーム(i)について、fs[i].TSC < avgTSCの場合、
【数109】
式(109)
fs[i] .TSC > avgTSCの場合、
【数110】
式(110)
【0213】
ここで、時間的な複雑度が、フレームQpのスケーリング係数として使用可能な複数のQpデルタ係数にマッピングされる。
【0214】
Qp係数スムージング2361を実行すべく、ルックアヘッドQp係数スムージングユニット430が使用されてよい。複数のルックアヘッドバッファ内の利用可能な連続するフレームに対する複数のQp係数は、複数の連続するフレーム間のQpの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト(平準化)される。広範な変化は、品質の急激な変化をもたらし得る。これらのデルタQp係数は、次のように導き出されるフレームQpに適用される。選択されたシグマについて、
【数111】
式(111)
式中、sigmaは現在のフレームのいずれかのサイドで、3タップを使用すべく、1.5として選択される。特定のフレームについて、上記フィルタは、いずれかのサイドにおいて、複数の(filter_size/2)サンプルを持つ一連のサンプルに対し適用される。
【数112】
式(112)
式中、dは参照サンプルに対する現在のサンプルのインデックスである。
【数113】
式(113)
【数114】
式(114)
式中、qおよびsumは各参照サンプルに対し、ゼロに初期化される。最終的なqp_deltafは次のように導き出される。
【数115】
式(115)
【0215】
次に、フレームQpを計算2363すべく、各フレームに対し計算されるこれらのデルタQp係数が次の複数の式において使用される。これは、一例において、シーケンス非開始/アクティブなシーンQp計算ユニット418によって実行されてよい。複数のvbv計算に基づいて、est_qpが現在のフレームに推定されるQpである場合、かつ、est_qpが複数のQp制限値およびランク(式(106)と(4))のために調整されている場合、次のようになる。
【数116】
式(116)
【数117】
式(117)
【数118】
式(118)
式中、修正されたフレームQp(Pqp'')が再び新しい複数の制限値Qpを受ける2358。このQp境界チェックは、バッファステータスに応答できるPqp''について有効な第2の境界チェックである一方で、この動作は、開始、静的、あるいは複数の空白のフレームに対する境界チェックも含んでよい。動作706および2306に関し前述したとおり、例えば、複数の連続するフレーム間の大きすぎる偏差を回避すべく、複数のQp制限値が適用される。Qpは、その後、フレームエンコーディングに利用可能である。
【0216】
コーディング状態およびバッファステータスが更新されるよう、レートコントロール(RC)更新2360は、各フレームのエンコーディングが完了後、実行されてよい。複雑度cplxを有する特定のタイプおよびランクの現在のフレームが、act_qpを使用してエンコードされ、それがact_bitsを生成する場合、バッファおよび複数の推定モデルの複数のパラメータが更新される。バッファ更新については、次のようになる。
【数119】
式(119)
【0217】
複数の推定モデルの更新については、現在のフレームタイプおよびランクに対応する複数のビット推定を使用する、線形推定モデルが、式(23)から(26)を含む、複数のシーケンス開始推定モデルの場合と同様に更新される。
【0218】
フィールドの終了(EOF)チェックが実行2362され、GOP、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でない場合、TSC計算2306で開始する、処理が再実行される。EOFに達したら、複数のレートコントロールパラメータを消去する、RCシャットダウン2364が実行される。
【0219】
[ルックアヘッドアルゴリズムを備える1パスCBRの概要]
このセクションは、概して図23を参照しつつ、当該アルゴリズムフローについて簡潔に記載する。
【0220】
1.RC初期化:複数のRCパラメータを初期化する。
2.RCスタートアップ:複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ(複数のバッファ、複数の推定モデル等)を複数の適切な値に設定する。ビットレートおよびシーケンスの解像度に基づいて、複数の初期のQpが所定のテーブルに基づいて導き出される。
3.ルックアヘッドを備えるPdistance:フレームタイプおよびランクの複数の決定が前と同じく発生する。待機時間パラメータが複数のルックアヘッドバッファ内の利用可能なピクチャ数に基づいて設定される。フレームエンコーディングは、対応する待機時間値が設定されている場合にのみ許容される。
4.ルックアヘッドを備えたPicレートコントロール:これは、各フレームのエンコーディング前の、現在のフレームQpを決定するフレームレートコントロールである。
A.平均的複雑度:複数のルックアヘッドバッファ内の利用可能な全入力フレームに基づき、平均時空複雑度を計算する。
B.複数の静的/空白シーンのチェック:シーンが静的または一連の空白フレームの場合、既定の固定Qpが使用される。たとえ、これがシーンの途中で発生した場合であっても(例えば短時間の間、シーンが静的/空白になるとき)、複数の最後の安定状態Qpが、これまでの全フレームに対し使用され、それらは複数の空白/静的フレームとして検出される。
C.フレームの複数のQp制限:
i.シーケンスの開始:それがシーケンスの絶対的開始である場合、複数の実験に基づいて作成された初期のQp推定テーブルが使用され、複数の境界Qpを導き出す。このテーブルは、複雑度、ビットレート(bpp)およびZERO_RANKのフレームQpのマッピングであり、特定のターゲットビットレートを生成可能な計算された平均複雑度を有する、完全なシーケンスのための中間のZERO_RANKのP‐ピクチャQpの予測を試行する。複数のQp制限値は、対応する複数の所定のテーブルからも導き出される。
ii.いくらかの初期の履歴の構築後:平均的な複雑度に対し消費された過去の全ビット数および使用された平均Qpに係るいくらかの履歴を有するゆえ、複数の過去の統計に対する現在のフレームを含む、予想される複雑度およびビット数に基づき、新しいフレームに対するQpの予測を試行する。複数の過去の統計に対する現在のフレームは、現在のフレームを含む全ビット消費量をターゲットレートに近付け得るものである。複数のQp制限値が、標準のP対IおよびP対FのQpマッピングを使用するこのQpから導き出される。
iii.既定:上記(ii)のケースは、現在のフレームの複雑度およびこれまでの実際のビットレートがこれまでの平均的な複雑度およびターゲットビットレートにそれぞれ近い場合にのみ使用される。他の任意のケースにおいては、既定のQpがこれまでの平均Qpとなり、複数のQp制限値は、標準のP対IおよびP対FのQpマッピングを使用するこのQpから導き出される。
D.時間的適応量子化:複数のルックアヘッドバッファ内の利用可能なフレーム全入力フレームの複雑度に基づいて、キーフレームブースティングおよび(時間的)複雑度マスキングから導き出される複数のデルタQp係数を使用し、適応量子化がフレームQpにわたり適用される。
i.複数の低い複雑度または静的シーンのキーフレームブースティング:複数の複雑度の低いシーンにおける複数のキーフレームについて、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数の複雑度割合に基づいて検出される。Qp重み付け係数がI‐ピクチャに対し、導き出される。
ii.時間的複雑度マスキング:同様に、複数のルックアヘッドバッファ内のすべての利用可能なフレームの残りに対する、複数の時間的な重み付け係数が、これまでに利用可能な全フレームの平均的な複雑度に対する、複雑度の複数の相対的割合を使用し、導き出される。
iii.複数のQp係数スムージング:複数のルックアヘッドバッファ内の利用可能な連続するフレームに対する複数のQp係数は、複数の連続するフレーム間のQpの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト(平準化)される。広範な変化は、品質の急激な変化をもたらし得る。これらのデルタQp係数は、次のように導き出されるフレームQpに適用される。
E.フレームQp:
i.シーケンスの開始またはシーンの変更:フレームQpは、平均的な複雑度、ターゲットビットレート(bpp)および多くの実験に基づいて作成されたQpモデリングに基づいて、導き出される。このQpは、前のセクションCで導き出された複数の制限値に規制される。時折、モデルは開始(複数の空白フレーム等)の異常な複雑度に起因して、複数の誤ったQpを予測する可能性があるので、これは必要である。
ii.バッファコントロール:任意の他のフレームについて、バッファコントロールはフレームQpを決定する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Qpが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを動作ポイントに近づける現在の中間Qpに対し、適用される必要のあるデルタQp値を導き出したいと考える。これは以下のような一連の段階において導き出される。
a.バッファ推定およびバッファインクリメント:複数のバッファ、複数のQp、および複数の推定モデルの現在の状態に関し、複数のルックアヘッドバッファ内のすべての利用可能な将来のフレームが、複数のQpの現在の動作セットを使用してコードされた場合、バッファステータスおよびバッファインクリメントを予想する。
(i)利用可能な履歴:十分な履歴が複数のビット推定モデルに構築されると、これらが使用され、フレームがその複雑度に対し消費することとなるビット数、および現在のフレームのタイプおよびランクに対応するQpが推定され得る。
(ii)履歴なし:あるいは、複数の実験から導き出されたいくつかの割合モデルが使用され、特定の複雑度およびQpを持つ複数のフレームビットを推定する。これらのビット割合モデルは、I対Pビット率、P対Fビット率等である。
b.複数のデルタQp係数の計算:デルタQpの2つの係数が導き出される。1つは、バッファの現在の状態に対応し、もう1つは現在のシーンの複雑度に対応する。
(i)VBVデルタ:バッファ偏差に起因するデルタQp重み付け係数が計算される。
(ii)複雑度デルタ:d(iii)で導き出されたデルタQp重み付け係数は、複雑度デルタQp係数として使用される。
c.フレームQp計算:上記VBVデルタQpを現在の中間Qpに追加し、セクションCで導き出される複数の境界Qpに制限することで、新しいP Qpが導き出される。異なるフレームタイプおよびランクの複数のQpがこの新しいP Qpに基づいて再計算される。最後に、複雑度デルタQpは現在のフレームQpにも追加され、再度セクションCで導き出される複数の境界Qpに制限される。これにより、最終的なフレームQpを付与する。
5.Pic RCの更新:これは、現在のフレームの複雑度、Qpおよびビット数に基づいて、各フレームエンコードの終了において、バッファステータスおよび複数の推定モデルを更新する。
6.RCシャットダウン:複数のレートコントロールパラメータを消去する。
【0221】
[低遅延化コーディングをサポートするための諸変更]
別の態様において、より低いGOPサイズおよびIPPPコーディングが実装される。そこでは、ビデオ会議等の複数のアプリケーション向けに、低遅延化コーディングをサポートすべく、最新のNGVエンコーダに一連の変更が追加される。低遅延化コーディングのための典型的構成は、(1)IPPPコーディング、および(2)通常の場合における約2秒の、すなわち2秒バッファの遅延に対する少数フレームのバッファサイズ、である。ルックアヘッドバッファコントロールアルゴリズムを備える1パスCBRレートコントロールは、低遅延化コーディングシナリオに対処できるが、その理由は次の2つである。
【0222】
(a)レートコントロールは非常に一般的に動作する。レートコントロールは、複数の固定GOPサイズ、あるいは複数のピラミッド構造または複数のフレームタイプを全く想定していない。レートコントロールは、どんなタイプまたはランクがレートコントロールにpdistanceモジュールによって割り当てられていても、各フレームのビット数を推定するのに、複数の予測モデルを使用する。あらゆる利用可能な将来のフレームに対するそのような推定されるビット数が累積され、ターゲットビット数に関するエラーとともに現在のフレーム上で補償される。よって、このレートコントロールは、任意の複数のフレームタイプ、任意の複数のGOPサイズまたは任意の複数のピラミッド構造といった、任意の構成と連携できる。
【0223】
(b)バッファサイズが指定されない場合、既定で、バッファサイズに2秒バッファ(2*bitrate)が前提とされている。任意のアプリケーションに対し、減少されたバッファサイズが所望される場合、それは、「-bs bufferSizeinKb」パラメータを使用して指定され得る。これは、この値に最大バッファ充填量を設定し、バッファコントロールはこの制限内で動作する。
【0224】
バッファサイズがコマンドラインで指定されると、きついレートコントロールが有効になる。概して、多数の将来のフレームにわたるバッファ変更を確認することによって、フレームQpは修正され、それにより複数の個別のフレームのビット数における揺らぎを小さくできる。Fピラミッドコーディングについては、フレーム間でビット数が非常に高速に変わるので、また、対応する急速な複数のフレーム変化を回避するためにも、これは必要である。このスキームは本明細書で開示される通り適応される。しかしながら、きついレートコントロールの場合、バッファステータスは、各フレームに対し個々にチェックされ、フレームQpは、推定されるバッファステータスに基づいて補償される。
【0225】
減少された(およびきつい)レートコントロールおよび推定されるバッファステータスに基づくフレームQp補償を達成すべく、次の複数の式が使用される。各フレームに対する、フレームQpが各レートコントロール処理において上記の通り決定された後、est_qpおよびest_bitsが現在のフレームに、推定されるQpおよびビット数である場合、
【数120】
式(120)
【数121】
式(121)
【数122】
式(122)
【数123】
式(123)
【0226】
本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および/またはハードウェアおよび/またはこれら任意の組み合わせにおいて実装されてよい。例えば、システム300に係る様々なコンポーネントは、例えばスマートフォン等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ(SoC)のハードウェアによって少なくとも部分的に提供されてよい。当業者は、本明細書に記載された複数のシステムは、対応する複数の図面内に示されていない複数の追加コンポーネントを含んでよいことを認識してよい。例えば、本明細書に記載の複数のシステムは、明確化のため示されなかった、ビットストリームマルチプレクサモジュールまたはデマルチプレクサモジュール等の複数の追加コンポーネントを含んでよい。
【0227】
処理700、2200および2300は、本明細書に記載された複数のコーダシステムの任意のものを介して実装されてよい。さらに、複数の予測エラーデータパーティション、複数の元のデータパーティション、またはウェーブレットデータ等の任意の数のビデオデータの具現化において、これらの処理は、シリアルまたはパラレルのいずれかで繰り返されてよい。
【0228】
本明細書のこれら例示的処理の実装は、示される複数の動作を図示された順番で含んでよい一方で、本開示はこの点において限定されず、様々な例において、本明細書のこれら例示的処理の実装は、示された複数の動作のサブセットのみのタスクを、および/または図示されたものとは異なる順番において含んでよい。
【0229】
本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および/またはハードウェアおよび/またはこれら任意の組み合わせにおいて実装されてよい。例えば、システム1400に係る様々なコンポーネントは、例えばスマートフォン等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ(SoC)のハードウェアによって少なくとも部分的に提供されてよい。当業者は、本明細書に記載された複数のシステムは、対応する複数の図面内に示されていない複数の追加コンポーネントを含んでよいことを認識してよい。例えば、本明細書に記載の複数のシステムは、明確化のため示されなかった、ビットストリームマルチプレクサモジュールまたはデマルチプレクサモジュール等の複数の追加コンポーネントを含んでよい。
【0230】
また、本明細書で記載される複数の動作の1または複数は、1または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、1または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、1または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび/または複数の命令または複数の命令セットに応答して、1または複数のプロセッサコアを含むプロセッサは、本明細書に記載のこれら例示的処理の1または複数の動作を行ってよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび/または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび/または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび/または複数のシステムの任意のものに対し、本明細書に記載の複数のビデオシステムの少なくとも複数の部分を実行させる。
【0231】
本明細書に記載の任意の実装で使用されるように、用語「モジュール」は、本明細書で記載の機能を提供するよう構成されたソフトウェアロジック、ファームウェアロジックおよび/またはハードウェアロジックの任意の組み合わせを表現する。ソフトウェアはソフトウェアパッケージ、コードおよび/または命令セットまたは複数の命令として具現化されてよく、「ハードウェア」は本明細書に記載の任意の実装で使用されるように、ハードワイヤード回路、プログラマブル回路、状態機械回路および/またはプログラマブル回路によって実行される複数の命令を格納するファームウェアを、例えば単体でまたはこれら任意の組み合わせにおいて含んでよい。これら複数のモジュールは、例えば集積回路(IC)、システムオンチップ(SoC)等の、より大型のシステムの一部を形成する回路として、集合的にまたは個々に具現化されてよい。例えば、あるモジュールは、本明細書に記載の複数のコーディングシステムに係るソフトウェア、ファームウェア、またはハードウェアを介する実装のためにロジック回路に具現化されてよい。
【0232】
図24は、例示的なビデオコーディングシステム2400の説明図であり、本開示の少なくとも一部の実装に従って配置されている。図示された実装において、ビデオコーディングシステム2400は、イメージングデバイス2401、ビデオエンコーダ100、ビデオデコーダ200(および/またはプロセッシングユニット2420のロジック回路2450を介して実装されるビデオコーダ)、アンテナ2402、1または複数のプロセッサ2403、1または複数のメモリ記憶装置2404、および/またはディスプレイデバイス2405を含んでよい。
【0233】
図示の通り、イメージングデバイス2401、アンテナ2402、プロセッシングユニット2420、ロジック回路2350、ビデオエンコーダ100、ビデオデコーダ200、プロセッサ2403、メモリ記憶装置2404、および/またはディスプレイデバイス2405は、互いに通信できてよい。前述の通り、ビデオエンコーダ100およびビデオデコーダ200の両方が図示されているが、様々な例において、ビデオコーディングシステム2400は、ビデオエンコーダ100のみ、あるいはビデオデコーダ200のみを含んでよい。
【0234】
図示の通り、いくつかの例において、ビデオコーディングシステム2400はアンテナ2402を含んでよい。アンテナ2402は、例えば、ビデオデータのエンコードされたビットストリームを送信または受信するよう構成されてよい。さらに、いくつかの例において、ビデオコーディングシステム2400はディスプレイデバイス2405を含んでよい。ディスプレイデバイス2405は、ビデオデータを表示するよう構成されてよい。図示の通り、いくつかの例において、ロジック回路2450はプロセッシングユニット2420を介して実装されてよい。プロセッシングユニット2420は、特定用途向け集積回路(ASIC)ロジック、グラフィクスプロセッサ、汎用プロセッサ等を含んでよい。ビデオコーディングシステム2400は、オプションのプロセッサ2403も含んでよい。オプションのプロセッサ2403は同じく、特定用途向け集積回路(ASIC)ロジック、グラフィクスプロセッサ、汎用プロセッサ等を含んでよい。 いくつかの例において、ロジック回路2450はハードウェア、ビデオコーディング専用ハードウェア等を介して実装されてよく、プロセッサ2403は汎用ソフトウェア、オペレーティングシステム等を介して実装されてよい。また、メモリ記憶装置2404は、揮発性メモリ(例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM等)または不揮発性メモリ(例えば、フラッシュメモリ等)などの任意のタイプのメモリであってよい。非限定的な例において、メモリ記憶装置2404はキャッシュメモリによって実装されてよい。いくつかの例において、ロジック回路2450は、メモリ記憶装置2404(例えば、イメージバッファの実装のため)にアクセスしてよい。他の複数の例において、ロジック回路2450および/またはプロセッシングユニット2420は、イメージバッファ等の実装のために、複数のメモリ記憶装置(例えば、キャッシュ等)を含んでよい。
【0235】
いくつかの例において、ロジック回路を介して実装されるビデオエンコーダ100は、イメージバッファ(プロセッシングユニット2420またはメモリ記憶装置2404のいずれかを介して)およびグラフィックス処理ユニット(プロセッシングユニット2420を介して)を含んでよい。グラフィックス処理ユニットは、イメージバッファに通信可能に連結されてよい。図1に照らし記載された様々なモジュールおよび/または本明細書に記載された他の任意のエンコーダシステムまたはサブシステムを具現化すべく、グラフィックス処理ユニットは、ロジック回路2450を介して実装されるビデオエンコーダ100を含んでよい。例えば、グラフィックス処理ユニットは、コーディングパーティションジェネレータロジック回路、適応変換ロジック回路、コンテンツプレアナライザ、エンコードコントローラロジック回路、適応エントロピーエンコーダロジック回路等を含んでよい。ロジック回路は、本明細書で記載された様々な動作を実行するよう構成されてよい。
【0236】
一例において、ビデオエンコーダ100のグラフィックス処理ユニットは、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得するよう構成されてよい。マルチレベル階層は、複数の参照フレームとして使用される、複数のI‐ピクチャ若しくはP-ピクチャまたはそれら両方を少なくとも備えるベースレベルを備える。また、この階層は、ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベル、および複数の参照フレームとして使用されず、かつ、複数の他のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルを備えてよい。ここにおいて、複数のP-ピクチャは、順序に関連して複数の過去のフレームを複数の参照として使用し、また、最大レベル上の複数のピクチャは、複数の過去の参照フレーム、将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。当該方法は、少なくとも1つの現在のフレームの階層レベルに少なくとも依存して、複数のフレームに対する量子化パラメータ(Qp)を判断することを含んでよい。その場合、各フレームは、フレームが存在するレベルに関連付けられたランクが付与される。
【0237】
ビデオデコーダ200は、ロジック回路2450を介して実装されるのと同様の方法で実装され、図2のデコーダ200に関し前述した様々なモジュールおよび/または本明細書で記載された任意の他のデコーダシステム若しくはサブシステムを具現化してよい。
【0238】
いくつかの例において、ビデオコーディングシステム2400のアンテナ2402は、ビデオデータのエンコードされたビットストリームを受信するよう構成されてよい。前述の通り、エンコードされたビットストリームは、フレームデータを保持するイメージバッファを有するコーダと、前述の方法を実行するグラフィックス処理ユニットとに関連付けられたデータを含んでよい。ビデオコーディングシステム2400は、アンテナ2402に連結され、かつ、エンコードされたビットストリームをデコードするよう構成されたビデオデコーダ200も含んでよい。
【0239】
複数の実施形態において、本明細書に記載の複数の特徴は、1または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して、行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、1または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、1または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび/または複数の命令または複数の命令セットに応答して、1または複数のプロセッサコアを含むプロセッサは、本明細書に記載の1または複数の特徴を実行してよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび/または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび/または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび/または複数のシステムの任意のものに対し、本明細書に記載の複数の特徴の少なくとも複数の部分を実行させる。
【0240】
図25は、例示的システム2500の説明図であり、本開示の少なくとも一部の実装に従って配置されている。様々な実装において、システム2500は、メディアシステムであってよいが、この文脈に限定されるわけではない。例えば、システム2500は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(スマートフォン、スマートタブレットまたはスマートテレビ等)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、複数のカメラ(複数の自動露出カメラ、複数のスーパーズームカメラ、複数のデジタル一眼レフ(DSLR)カメラ等)に組み込まれてよい。
【0241】
様々な実装において、システム2500はディスプレイ2520に連結されたプラットフォーム2502を含む。プラットフォーム2502は、コンテンツサービスデバイス2530またはコンテンツ配信デバイス2540または他の複数の同様のコンテンツソース等のコンテンツデバイスからコンテンツを受信してよい。例えば、プラットフォーム2502および/またはディスプレイ2520と対話すべく、1または複数のナビゲーション機能を含む、ナビゲーションコントローラ2550が使用されてよい。これらコンポーネントの各々について、以降に詳述される。
【0242】
様々な実装において、プラットフォーム2502は、チップセット2505、プロセッサ2510、メモリ2512、アンテナ2513、ストレージ2514、グラフィックスサブシステム2515、複数のアプリケーション2516および/または無線2518の任意の組み合わせを含んでよい。チップセット2505は、プロセッサ2510、メモリ2512、ストレージ2514、グラフィックスサブシステム2515、複数のアプリケーション2516および/または無線2518間の相互通信を提供してよい。例えば、チップセット2505は、ストレージ2514との相互通信を提供可能なストレージアダプタ(不図示)を含んでよい。
【0243】
プロセッサ2510は、複合命令セットコンピュータ(CISC)プロセッサまたは縮小命令セットコンピュータ(RISC)プロセッサ、複数のx86命令セット互換プロセッサ、マルチコア、または他の任意の複数のマイクロプロセッサ若しくは中央処理装置(CPU)として実装されてよい。様々な実装において、プロセッサ2510はデュアルコアプロセッサ、デュアルコアモバイルプロセッサ等であってよい。
【0244】
メモリ2512は、限定はされないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、またはスタティックRAM(SRAM)等の揮発性メモリデバイスとして実装されてよい。
【0245】
ストレージ2514は、限定はされないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、接続ストレージデバイス、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)、および/またはネットワークアクセス可能ストレージデバイス等の不揮発性ストレージデバイスとして実装されてよい。様々な実装において、ストレージ2514は例えば複数のハードドライブが含まれる場合に、貴重なデジタルメディアの保護が強化されるよう、ストレージ性能を向上させるテクノロジを含んでよい。
【0246】
グラフィックスサブシステム2515は、表示のために、スチルまたはビデオ等の複数のイメージの処理を実行してよい。グラフィックスサブシステム2515は、例えば、グラフィックス処理ユニット(GPU)またはビジュアルプロセッシングユニット(VPU)であってよい。グラフィックスサブシステム2515およびディスプレイ2520を通信可能に連結すべく、アナログまたはデジタルインターフェースが使用されてよい。例えば、インターフェースは、High−Definition Multimedia Interface、DisplayPort、ワイヤレスHDMI(登録商標)、および/またはワイヤレスHDに準拠した複数の技術の任意のものであってよい。グラフィックスサブシステム2515は、プロセッサ2510またはチップセット2505に統合されてよい。一部の実装において、グラフィックスサブシステム2515は、チップセット2505に通信可能に連結されたスタンドアロンのデバイスであってよい。
【0247】
本明細書に記載された複数のグラフィックスおよび/またはビデオ処理技術は、様々なハードウェアアーキテクチャに実装されてよい。例えば、グラフィックスおよび/またはビデオ機能は、チップセットと統合されてよい。あるいは、個別のグラフィックスおよび/またはビデオプロセッサが使用されてよい。さらに別の実装において、複数のグラフィックスおよび/またはビデオ機能は、マルチコアプロセッサを含む、汎用プロセッサによって提供されてよい。さらなる複数の実施形態において、これら複数の機能は、コンシューマエレクトロニクスデバイスに実装されてよい。
【0248】
無線2518は、様々な好適なワイヤレス通信技術を使用して、複数の信号を送信および受信可能な1または複数の無線を含んでよい。そのような複数の技術は、1または複数の無線ネットワークにわたる複数の通信を伴ってよい。例示的な無線ネットワークは(限定はされないが)、複数のワイヤレスローカルエリアネットワーク(WLAN)、複数のワイヤレスパーソナルエリアネットワーク(WPAN)、複数のワイヤレス大都市圏ネットワーク(WMAN)、複数の移動体通信ネットワーク、および複数の衛星ネットワークを含む。そのような複数のネットワークにわたり通信する際、無線2518は任意のバージョンの1または複数の適切な規格に従って、動作してよい。
【0249】
様々な実装において、ディスプレイ2520は任意のテレビタイプのモニタまたはディスプレイを含んでよい。ディスプレイ2520は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビ受像機のようなデバイスおよび/またはテレビ受像機を含んでよい。ディスプレイ2520は、デジタルおよび/またはアナログであってよい。様々な実装において、ディスプレイ2520はホログラフィックディスプレイであってよい。また、ディスプレイ2520は、視覚投影を受信可能な透明な表面であってよい。複数のそのような投影は、様々な形態の情報、イメージおよび/またはオブジェクトを伝達してよい。例えば、複数のそのような投影は、モバイル拡張現実(MAR)アプリケーションのためのビジュアルオーバレイであってよい。1または複数のソフトウェアアプリケーション2516の制御下で、プラットフォーム2502はユーザインターフェース2522をディスプレイ2520に表示してよい。
【0250】
様々な実装において、コンテンツサービスデバイス2530は、任意の国営、国際的および/または独立のサービスによってホストされてよく、よって、例えばインターネットを介してプラットフォーム2502にアクセス可能であってよい。コンテンツサービスデバイス2530は、プラットフォーム2502および/またはディスプレイ2520に連結されてよい。プラットフォーム2502および/またはコンテンツサービスデバイス2530は、ネットワーク2560とメディア情報を通信(例えば、送信および/または受信)すべく、ネットワーク2560に連結されてよい。コンテンツ配信デバイス2540は、プラットフォーム2502および/またはディスプレイ2520にも連結されてよい。
【0251】
様々な実装において、コンテンツサービスデバイス2530は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報および/またはコンテンツを配信可能な複数のインターネット有効化デバイスまたは装置を含んでよい。また、コンテンツサービスデバイス2530は、複数のコンテンツプロバイダおよびプラットフォーム2502およびディスプレイ2520間を、ネットワーク2560を介して、あるいは直接に、一方向若しくは双方向に、コンテンツを通信可能な任意の他の同様のデバイスを含んでよい。コンテンツは、システム2500内の複数のコンポーネントの任意の1つおよびネットワーク2560経由のコンテンツプロバイダと、一方向および/または双方向に通信されてよいことが理解される。コンテンツの複数の例は、例えば、ビデオ、音楽、医療およびゲーム情報等を含む、任意のメディア情報を含んでよい。
【0252】
コンテンツサービスデバイス2530は、メディア情報、デジタル情報、および/または他のコンテンツを含むケーブルテレビプログラム等のコンテンツを受信してよい。複数のコンテンツプロバイダの複数の例は、ケーブル若しくは衛星テレビまたは無線またはインターネットコンテンツプロバイダの任意のものを含んでよい。提供された複数の例は、本開示に従う複数の実装を、いかなる意味においても限定することを意味しない。
【0253】
様々な実装において、プラットフォーム2502は、1または複数のナビゲーション機能を有するナビゲーションコントローラ2550からの複数のコントロール信号を受信してよい。例えば、ユーザインターフェース2522と対話すべく、コントローラ2550の複数のナビゲーション機能が使用されてよい。様々な実施形態において、ナビゲーションコントローラ2550は、ユーザが空間(連続的および多次元)データをコンピュータに入力できるようにする、コンピュータハードウェアコンポーネント(特に、ヒューマンインターフェースデバイス)であり得る、ポインティングデバイスであってよい。複数のグラフィカルユーザインターフェース(GUI)等の多くのシステム、および複数のテレビ受像機および複数のモニタは、ユーザが複数の物理的ジェスチャを使用して、コンピュータまたはテレビ受像機に対し、データをコントロールおよびデータの提供をできるようにする。
【0254】
コントローラ2550のナビゲーション機能の複数の動きについては、ポインタ、カーソル、フォーカスリング、またはディスプレイ上に表示される他の複数の視覚インジケータの複数の動きによって、ディスプレイ(例えば、ディスプレイ2520)上でレプリケートされてよい。例えば、複数のソフトウェアアプリケーション2516の制御下、ナビゲーションコントローラ2550に位置された複数のナビゲーション機能は、ユーザインターフェース2522上に表示される、複数の仮想ナビゲーション機能にマッピングされてよい。様々な実施形態において、コントローラ2550は、個別のコンポーネントでなく、プラットフォーム2502および/またはディスプレイ2520に統合されてよい。本開示はしかしながら、上記複数の要素または本明細書で図示または示された文脈に限定されない。
【0255】
様々な実装において、複数のドライバ(不図示)は、例えば、機能が有効にされた場合に、テレビ受像機と同様に、初期起動後、ボタンをタッチすることで、複数のユーザがプラットフォーム2502を素早くオンおよびオフにすることを可能にするテクノロジを含んでよい。プログラムロジックは、プラットフォームが「オフ」の場合であっても、プラットフォーム2502が複数のメディアアダプタ若しくは他のコンテンツサービスデバイス2530若しくはコンテンツ配信デバイス2540に対し、コンテンツをストリーミングできるようにしてよい。また、チップセット2505は、例えば、5.1サラウンドサウンドオーディオおよび/または高精細度7.1サラウンドサウンドオーディオに対応したハードウェアおよび/またはソフトウェアを含んでよい。複数のドライバは、複数の統合されたグラフィックスプラットフォームのためのグラフィックスドライバを含んでよい。様々な実施形態において、グラフィックスドライバは、ペリフェラルコンポーネントインターコネクト(PCI)Expressグラフィックスカードを備えてよい。
【0256】
様々な実装において、システム2500内に示される複数のコンポーネントの1または複数の任意のものは、統合されてよい。例えば、プラットフォーム2502およびコンテンツサービスデバイス2530は統合されてよく、あるいはプラットフォーム2502およびコンテンツ配信デバイス2540は統合されてよく、あるいはプラットフォーム2502、コンテンツサービスデバイス2530、およびコンテンツ配信デバイス2540は例えば統合されてよい。様々な実施形態において、プラットフォーム2502およびディスプレイ2520は統合ユニットであってよい。例えば、ディスプレイ2520およびコンテンツサービスデバイス2530は統合されてよく、あるいはディスプレイ2520およびコンテンツ配信デバイス2540は統合されてよい。これらの例は、本開示を限定することを意味しない。
【0257】
様々な実施形態において、システム2500は、無線システム、有線システム、あるいはこれら両方の組み合わせとして実装されてよい。無線システムとして実装される場合、システム2500は、1または複数のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、コントロールロジックといった無線の共有媒体を介して通信するのに好適な、複数のコンポーネントおよびインターフェースを含んでよい。無線の共有媒体の一例は、ラジオ波スペクトル等の無線スペクトルの複数の部分を含んでよい。有線システムとして実装される場合、システム2500は、複数の入出力(I/O)アダプタ、I/Oアダプタを対応する有線通信媒体に接続するための複数の物理的コネクタ、ネットワークインターフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等の有線通信媒体を介して通信するのに好適な、複数のコンポーネントおよびインターフェースを含んでよい。有線通信媒体の複数の例は、ワイヤ、ケーブル、複数の金属リード、プリント基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ等を含んでよい。
【0258】
プラットフォーム2502は、情報を通信するための1または複数の論理的または物理的なチャネルを確立してよい。情報は、メディア情報およびコントロール情報を含んでよい。メディア情報は、ユーザ向けコンテンツを表す任にのデータを指してよい。コンテンツの複数の例は、例えば、音声通話、テレビ会議、ストリーミングビデオ、電子メール(「email」)メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、イメージ、ビデオ、テキスト等からのデータを含んでよい。音声通話からのデータは、例えば、音声情報、複数の沈黙時間、バックグランドノイズ、コンフォートノイズ、複数のトーン等であってよい。コントロール情報は、自動システム向けの複数のコマンド、複数の命令または複数の制御語を表す任意のデータを指してよい。例えば、システムを介してメディア情報をルーティングすべく、あるいはメディア情報を所定の方法で処理するためのノードを命令すべく、コントロール情報が使用されてよい。複数の実施形態はしかしながら、当該文脈で示された、または図25に図示された複数の要素に限定されない。
【0259】
上記の通り、システム2500は様々な物理的スタイル若しくは外形情報で具現化されてよい。図26は、システム2600が具現化されてよい、小さな外形情報デバイス2600の複数の実装を示す。様々な実施形態において、例えば、デバイス2600は、複数の無線機能を有するモバイルコンピューティングデバイスとして実装されてよい。モバイルコンピューティングデバイスは、処理システムと、例えば、1または複数のバッテリ等のモバイル動力源または電源とを有する任意のデバイスを指してよい。
【0260】
前述の通り、モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(スマートフォン、スマートタブレットまたはスマートテレビ等)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、複数のカメラ(複数の自動露出カメラ、複数のスーパーズームカメラ、複数のデジタル一眼レフ(DSLR)カメラ等)を含んでよい。
【0261】
また、モバイルコンピューティングデバイスの複数の例は、人間によって身に着けられるよう構成された複数のコンピュータを含んでよい。そのようなものとしては、リスト(腕)コンピュータ、フィンガ(指)コンピュータ、リング(指輪)コンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、複数のシュー(靴)コンピュータ、複数のクロージング(衣類)コンピュータ、および他の複数のウェアラブルコンピュータがある。様々な実施形態において、例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーション並びに複数の音声通信および/またはデータ通信を実行可能なスマートフォンとして実装されてよい。一部の実施形態は、例示として、スマートフォンとして実装されたモバイルコンピューティングデバイスに関し記載され得るが、他の複数のワイヤレスモバイルコンピューティングデバイスを使用して、他の複数の実施形態が実装できることも理解され得る。複数の実施形態はこの文脈に限定されない。
【0262】
図26に図示の通り、デバイス2600は、ハウジング2602、ユーザインターフェース2610を含み得るディスプレイ2604、入/出力(I/O)デバイス2606、およびアンテナ2608を含んでよい。デバイス2600は、複数のナビゲーション機能2612も含んでよい。ディスプレイ2604は、モバイルコンピューティングデバイスに適切な情報を表示するための任意の好適なディスプレイユニットを含んでよい。I/Oデバイス2606は、モバイルコンピューティングデバイスに情報を入力するための任意の好適なI/Oデバイスを含んでよい。I/Oデバイス2606の複数の例は、英数字キーボード、テンキーパッド、タッチパッド、複数の入力キー、複数のボタン、複数のスイッチ、複数のロッカスイッチ、複数のマイク、複数のスピーカ、音声認識デバイスおよびソフトウェア等を含んでよい。情報は、マイク(不図示)を介してデバイス2600に入力されてもよい。そのような情報は、音声認識デバイス(不図示)によってデジタル化されてよい。複数の実施形態は、この文脈に限定されない。
【0263】
本明細書のこれら例示的処理の実装は、示される複数の動作を図示された順番で含んでよい一方で、本開示はこの点において限定されず、様々な例において、本明細書のこれら例示的処理の実装は、示された複数の動作のサブセットのみのタスクを、および/または図示されたものとは異なる順番において含んでよい。
【0264】
また、本明細書で記載される複数の動作の1または複数は、1または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、1または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、1または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび/または複数の命令または複数の命令セットに応答して、1または複数のプロセッサコアを含むプロセッサは、本明細書に記載のこれら例示的処理の1または複数の動作を行ってよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび/または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび/または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび/または複数のシステムの任意のものに対し、本明細書に記載の複数のビデオシステムの少なくとも複数の部分を実行させる。
【0265】
本明細書に記載の任意の実装で使用されるように、用語「モジュール」は、本明細書で記載の機能を提供するよう構成されたソフトウェアロジック、ファームウェアロジックおよび/またはハードウェアロジックの任意の組み合わせを表現する。ソフトウェアはソフトウェアパッケージ、コードおよび/または命令セットまたは複数の命令として具現化されてよく、「ハードウェア」は本明細書に記載の任意の実装で使用されるように、ハードワイヤード回路、プログラマブル回路、状態機械回路および/またはプログラマブル回路によって実行される複数の命令を格納するファームウェアを、例えば、単体でまたはこれら任意の組み合わせにおいて含んでよい。これら複数のモジュールは、例えば集積回路(IC)、システムオンチップ(SoC)等の、より大型のシステムの一部を形成する回路として、集合的にまたは個々に具現化されてよい。例えば、あるモジュールは、本明細書に記載の複数のコーディングシステムに係るソフトウェア、ファームウェア、またはハードウェアを介する実装のためにロジック回路に具現化されてよい。
【0266】
様々な実装は、複数のハードウェア要素、複数のソフトウェア要素、あるいはこれら両方の組み合わせを使用して実装されてよい。複数のハードウェア要素の複数の例は、複数のプロセッサ、複数のマイクロプロセッサ、複数の回路、複数の回路要素(例えば、複数のトランジスタ、複数のレジスタ、複数のコンデンサ、複数のインダクタ等)、複数の集積回路、複数の特定用途向け集積回路(ASIC)、複数のプログラマブルロジックデバイス(PLD)、複数のデジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、複数のロジックゲート、複数のレジスタ、半導体デバイス、複数のチップ、複数のマイクロチップ、複数のチップセット等を含んでよい。ソフトウェアの複数の例は、複数のソフトウェアコンポーネント、複数のプログラム、複数のアプリケーション、複数のコンピュータプログラム、複数のアプリケーションプログラム、複数のシステムプログラム、複数の機械プログラム、オペレーティングシステムソフトウェア、ミドルウェアモジュール、ファームウェアモジュール、ソフトウェアモジュール、複数のルーチン、複数のサブルーチン、複数の機能、複数の方法、複数のプロシージャ、複数のソフトウェアインターフェース、複数のアプリケーションプログラミングインターフェース(API)、複数の命令セット、コンピューテイングコード、コンピュータコード、複数のコードセグメント、複数のコンピュータコードセグメント、複数の語、複数の値、複数の記号、あるいはこれら任意の組み合わせを含んでよい。実施形態を複数のハードウェア要素および/または複数のソフトウェア要素を使用して実装するかどうかの判断は、任意の数の要因に従って変わってよい。例えば、所望の計算速度、複数の能力レベル、複数の熱耐性、処理サイクル予算、複数の入力データレート、複数の出力データレート、複数のメモリリソース、複数のデータバス速度および他の複数の設計若しくは性能制約といったものである。
【0267】
少なくとも1実装に係る1または複数の態様は、機械可読媒体上に格納された、複数の記述命令によって実装されてよい。機械可読媒体は、プロセッサ内の様々なロジックを表現し、機械可読媒体は機械により読み取られると、機械に対し、本明細書に記載された複数の技術を実行するようロジックを組み立てさせる。複数の「IPコア」として知られる、そのような複数の記述表現は、有形の機械可読媒体に格納されてよく、様々な顧客若しくは製造施設に対し供給され、実際にロジックまたはプロセッサを作成する複数の製造機械にロードされてよい。
【0268】
本明細書に記載された具体的な特徴セットは、様々な実装に照らし記載されている一方で、この記載は、限定的意味に解釈されることを意図されていない。従って、本明細書に記載された実装の様々な修正、並びに本開示の属する技術分野における当業者にとって自明な他の複数の実装は、本開示の精神および範囲内に属するものとみなされる。
【0269】
以下の複数の例は、さらなる複数の実装に関する。
【0270】
一実装として、コンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のP-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。上記方法はまた、少なくとも1つの現在のフレームの階層のレベルに少なくとも依存して、複数の上記フレームに対する量子化パラメータ(Qp)を判断する段階を備え、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与される。
【0271】
別の実装として、上記方法はまた、少なくともはじめに、上記フレームの上記レベルが上記ベースレベルに近いほど、上記複数のフレームのためのより小さい量子化パラメータを提供する段階を備え、少なくともはじめに、すべての上記他の複数のレベルと比較して、上記複数のフレームのための最小の量子化パラメータを上記ベースレベルに提供する段階を備え、Qpと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも上記ランク(0)のP‐ピクチャの初期のQpを形成する段階を備え、上記ランク(0)の非P‐ピクチャの複数のフレームの上記Qpを形成すべく、少なくとも上記P‐ピクチャのランク(0)の複数のフレームの上記初期のQpを使用する段階を備え、フレームのためのランク(0)の非P‐ピクチャのQp値を形成すべく、P‐ピクチャのランク(0)のQp値の、ランク(0)の非P‐ピクチャのQp値に対する所定のマッピングを使用する段階を備える。
【0272】
上記方法は、各非ゼロレベルのための固定初期フレームQpを判断する段階を備え、非ゼロレベル上のフレームのタイプに関わらず、上記固定初期フレームQpが、上記非ゼロレベル上のすべてのフレームに対して確立され、ランク(0)以外の複数のフレームのQpを、以下の式から判断する段階を備え、Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、上記ランク(0)の複数のP‐ピクチャのための初期のQpで、fpic_qは、上記ランク(0)の複数のF‐ピクチャのために使用される上記初期のQpで、かつ、rは分析されている現在のフレームの上記ランクであり、オプションとして、複数の制限値をQp値に適用する段階を備えており、上記複数の制限値は、(1)シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数(bpp)との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、(2)シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の上記フレームのための複数の制限値、(3)複数のQp制限値を判断するために使用される中間Qpとしてこれまでにエンコードされた複数の上記フレームの平均Pqpを設定する段階の少なくとも1つから導き出され、(2)において、これまでにエンコードされた複数の上記フレームの(1)中間Qpは、(avg_pqp)これまでにエンコードされたすべての上記フレームの複数の上記平均Pqp、(avg_cplx)平均時空複雑度、(act_bits)これまでにエンコードされたすべての上記フレームに使用される全ビット数、(cplx)上記現在のフレームの複雑度、および(target_bits)上記現在のフレームを含む、すべての上記フレームのための全ターゲットビット数に基づいており、上記履歴のオプション(2)は、結果的に得られる上記中間Qpが上記平均Pqpの特定の割合の範囲内であるときに使用され、(3)において、Pqpは上記P‐ピクチャのランク(0)のQpであり、上記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のQpに対して、より最終的なフレームQpを別に判断する段階を備え、上記フレームの上記ランクに少なくとも部分的に基づいて、初期のQpに対して、より最終的なフレームQpを判断する段階を備え、上記初期のP‐ピクチャのランク(0)のQpと、I‐ピクチャ対P‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、P‐ピクチャのための推定されるビット数の値(P_est_bits)を、確立する段階を備え、F‐ピクチャのための推定されるビット数の値(F_est_bits)を、初期のP‐ピクチャのランク(0)のQpと、P‐ピクチャ対F‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、上記F‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをF‐ピクチャに提供する上記オプションを提供する段階を備え、フレームのビット数の推定は、線形モデルを用いて計算され、上記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の上記フレームタイプは、少なくともP‐ピクチャ、F‐ピクチャ、B‐ピクチャ、またはI‐ピクチャを含む。
【0273】
上記方法はまた、バッファのビット容量に対する、上記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームQpを判断する段階を備え、上記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、バッファのバッファ充填量に応答する、フレームのためのより最終的なQpを判断する段階であって、レベル応答型の複数のQpモデルで、上記フレームのビット数を推定する段階と、ビデオバッファ検証(VBV)デルタを適用するかどうかを判断する段階と、上記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、閾値が超えられると、上記VBVデルタによって調整される上記初期のQpおよび上記複雑度デルタに少なくとも部分的に基づいて、上記より最終的なQpを判断する段階とを含み、上記VBVデルタは、バッファステータスに関連付けられており、バッファの中間動作Qpに対し初期のQpを調整すべく適用されており、かつ、(a)上記バッファインクリメントのレートが閾値を超えているかどうか、(b)上記バッファの充填量のバッファ推定が閾値を超えているかどうかの少なくとも1つに依存して適用されており、上記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する上記ビット数の値であり、かつ上記フレームのビット数を推定する段階に基づいており、上記バッファ推定はバッファ充填量値と上記バッファインクリメントの値とに関連付けられている段階を備え、上記初期のQpは、ランク(0)のP‐ピクチャのQpであり、少なくとも以下の(A)および(B)の1つを含んでおり、(A)ルックアヘッドを備える単一パスの分析を実行する段階であって、現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、上記現在のフレームのためのより最終的なQpを形成する段階を備え、上記事前分析する段階は、複数の上記ルックアヘッドフレームを完全にエンコードせずに、複数の上記ルックアヘッドフレームの複数の上記複雑度および動き特性を判断する段階を含む、デルタ値でより初期のQpを調整する段階に少なくとも部分的に基づいて、より最終的なQpを判断する段階を備え、上記調整する段階は、デルタ値を(1)複雑度デルタ、および(2)バッファの充填量に関連付けられたビデオバッファ検証(VBV)デルタを用いて判断する段階を含み、上記複雑度デルタは、分析されている上記現在のフレームを有し、上記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、上記適応量子化は、I‐ピクチャに対するフレームの全ビット量と、上記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの上記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、複数の連続するフレームの複数のデルタ値のデルタQp係数スムージングとの少なくとも1つを含むルックアヘッドを備える単一パスの分析を実行する段階と、(B)2パスの分析を実行する段階であって、使用された上記ビット数および分析された複数の上記フレームの複雑度を取得すべく、上記初期のQpの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第1のパス分析を実行する段階と、上記シーケンスの複数の上記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントQp近傍に、Qpを維持すべく、デルタ値によって上記初期のQpを調整することによって、上記シーケンスの複数の上記フレームのためのより最終的なフレームQpを判断すべく、第2のパス分析を実行する段階とを備え、上記デルタ値は、バッファの上記充填量ステータスおよび分析されている上記フレームシーケンスの上記複雑度に関連付けられている2パスの分析を実行する段階を備える。
【0274】
別のアプローチとして、ビデオコーディングのためのルックアヘッドを備える1パスレートコントロールのためのコンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のP-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。上記方法はまた、現在のフレームの階層のレベルに少なくとも依存して、複数の上記フレームに対する初期の量子化パラメータ(Qp)を判断する段階であって、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与される段階と、現在のフレームに対する、複数の将来のフレームであり、かつ、複数の上記ルックアヘッドフレームを完全にエンコードせずに、複数の上記ルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を判断すべく、分析された、多数のルックアヘッドフレームを事前分析する段階と、上記現在のフレームの上記初期のQpを調整すべく、複数の上記ルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なQpを判断する段階とを備える。
【0275】
そのような方法はまた、デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを判断する段階に少なくとも部分的に基づいて、より最終的なQpを判断する段階を備え、上記バッファは、上記ルックアヘッドの複数の将来のフレームのためのスペースを含み、バッファステータスを判断する上記段階は、上記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントQpに近づけるべく、複数のフレームのための現在のQpを変調する段階を含み、上記より最終的なQpを判断する段階は、上記バッファの上記充填量ステータスに関連付けられたビデオバッファ検証デルタと、分析されている、上記現在のフレームおよび複数の上記ルックアヘッドフレームを含む上記フレームシーケンスの上記複雑度に関連付けられた複雑度デルタとの、少なくとも1つによって部分的に形成されたデルタ値による、初期のQpを調整する段階を含み、上記複雑度デルタは、適応量子化を実行する段階、および上記フレームシーケンスの平均複雑度を使用する段階によって形成され、上記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、上記フレームシーケンスの平均複雑度は、複数の上記ルックアヘッドフレームの複数の上記複雑度を含み、上記複雑度デルタは、適応量子化を実行する段階によって形成され、上記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、I‐ピクチャに対する、かつ、上記I‐ピクチャを参照として使用する、同一シーケンス内の複数のI‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、上記フレームシーケンスは、複数の上記ルックアヘッドフレームの複数の上記複雑度を少なくとも部分的に使用することによって、低い複雑度であると判断され、VBVデルタ後の結果的に得られるQpが適用され、バッファの充填量ステータスに関連付けられており、上記複雑度デルタを適用することによって、上記結果的に得られるQpを調整する、上記より最終的なQpを判断する段階は、適応量子化を実行することによって初期のQpを調整する段階と、複数の連続するフレーム間のQpの変化を制限するためのVBVのQp係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の上記フレームの上記タイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、上記適応量子化は、上記初期のQpを調整するための上記デルタを形成することを含む。
【0276】
さらなる別の実装として、ビデオコーディングのための2パスレートコントロールのためのコンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のI‐ピクチャ若しくは複数のP-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも1つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のP-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。
【0277】
上記方法はまた、分析される各フレームのための初期の既定の量子化パラメータ(Qp)を用いて第1のパス分析を実行する段階と、個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ(Qp)を判断する段階を含む第2のパス分析を実行する段階と、コーディングに使用されるフレームのためのターゲットQp、および上記第1のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を判断する段階とを備え、上記第1のパス分析を実行する段階において、複数の初期の既定のQpは、現在のフレームの階層のレベルに少なくとも部分的に基づいて確立され、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与されており、かつ、上記第1のパス分析を実行する段階は、分析される複数の上記フレームのための複雑度およびビット数を判断するのに十分なように複数の上記フレームをエンコーディングする段階を含み、上記第2のパス分析を実行する段階は、1または複数のフレームの品質を強化すべく、適応量子化を実行する段階を含み、上記適応量子化を実行する段階は、同一のシーケンス内の少なくとも1つの他のフレームのためのビット量を減少させつつ、少なくとも1つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含む。
【0278】
上記方法はまた、上記第1のパス分析は、上記シーケンス内のすべての上記フレームをエンコードし、複雑度、ビットレート、およびQpの間の所定の関係を使用することによって、上記初期の既定のランク(0)のP‐ピクチャが形成され、フレーム毎のターゲットビット数に一致させるべく、複数の上記フレームをスケーリングする段階を備え、上記適応量子化を実行する段階は、I‐フレームに対する、かつ、上記I‐フレームを参照として使用する複数の上記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、上記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、スケーリングする段階および上記適応量子化は、ターゲットビットフレームサイズをもたらし、上記方法は、上記第1のパス分析および上記ターゲットビットフレームサイズ(tgt_size)において判断された、上記フレームの上記ビット数およびQpに依存して、フレームのコーディングのための推定される最終的なQpを判断する段階を備え、上記適応量子化を実行する段階は、デルタQp係数を形成し、かつ、複数の連続するフレーム間のQpの変化を制限するための複数の連続するフレームのQp係数スムージングを含み、かつ、複数の上記フレームのタイプとランクの組み合わせに依存し、分析されている上記フレームの上記フレームランクおよびタイプを考慮する反復を使用することによって、より最終的なQpを判断する段階を備え、上記反復は、適応量子化の上記デルタQp係数も考慮し、上記反復は、上記第1のパス分析からのフレーム毎の上記ビット数およびQpも考慮し、上記反復は、段階値に基づき、テストQp値を設定する段階と、選択されたフレームのための予想される全ビット数を計算する段階と、上記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、上記閾値が超えられているかどうかによって、上記テストQp値を別に変更する段階と、テストQpを有限回数に設定することで、処理を再開する段階とを含み、上記予想される全ビット数は、分析されている上記フレームのフレームランクおよびタイプ、適応量子化のデルタQp係数、および上記第1のパス分析からのフレーム毎のビット数およびQpに少なくとも部分的に基づいていることも含む。
【0279】
さらなる例において、少なくとも1つの機械可読媒体は、コンピューティングデバイス上での実行に応答して、上記コンピューティングデバイスに対し、上記複数の例のいずれかに従った方法を実行させる、複数の命令を含んでよい。
【0280】
さらなる例において、装置は上記複数の例のいずれかに従った複数の方法を実行させるための手段を含んでよい。
【0281】
上記複数の例は、複数の特徴の特定の組み合わせを含んでよい。しかしながら、上記複数の例は、この点に限定されず、様々な実装において、上記複数の例は、そのような複数の特徴のサブセットのみ、そのような複数の特徴の異なる順序、そのような複数の特徴の異なる組み合わせ、および/または明示的に列挙されたこれら特徴と異なる複数の追加的特徴を実行することを含んでよい。例えば、例示的方法に関し記載されたすべての特徴は、例示的装置、複数の例示的システム、および/または複数の例示的物品に対し実装されてよく、およびそれらの逆であってよい。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22A
図22B
図23
図24
図25
図26