(57)【特許請求の範囲】
【請求項１】
ビデオコーディングのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
少なくとも１つの現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する量子化パラメータ（Ｑｐ）を決定する段階とを備え、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与され、
前記量子化パラメータを決定する段階は、
ランク（０）以外の複数のフレームの前記量子化パラメータを、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出する段階を有する、方法。
【請求項２】
少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供する段階を備える、請求項１に記載の方法。
【請求項３】
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供する段階を備える、請求項１に記載の方法。
【請求項４】
Ｑｐと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク（０）のＰ‐ピクチャの初期のＱｐを形成する段階を備える、請求項１に記載の方法。
【請求項５】
前記ランク（０）のＩ‐ピクチャの複数のフレームの前記Ｑｐを形成すべく、少なくとも前記Ｐ‐ピクチャのランク（０）の複数のフレームの初期のＱｐを使用する段階を備える、請求項１に記載の方法。
【請求項６】
フレームのための前記ランク（０）のＩ‐ピクチャのＱｐ値を形成すべく、Ｐ‐ピクチャのランク（０）のＱｐ値の、ランク（０）のＩ‐ピクチャのＱｐ値に対する所定のマッピングを使用する段階を備える、請求項５に記載の方法。
【請求項７】
各非ゼロレべルのための固定初期フレームＱｐを決定する段階を備える、請求項１に記載の方法。
【請求項８】
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームＱｐが、前記非ゼロレベル上のすべてのフレームに対して確立される、請求項７に記載の方法。
【請求項９】
ランク（０）以外の複数のフレームの前記Ｑｐを、以下の式から導出する段階を備え、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク（０）の複数のＰ‐ピクチャのための初期のＱｐで、fpic_qは、前記ランク（０）の複数の機能性（Ｆ）‐ピクチャのために使用される前記初期のＱｐで、かつ、rは分析されている現在のフレームの前記ランクであり、Ｆ‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、請求項１に記載の方法。
【請求項１０】
複数の制限値をＱｐ値に適用する段階を備えており、
前記複数の制限値は、
（１）シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数（ｂｐｐ）との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
（２）シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
（３）複数のＱｐ制限値を判断するために使用される中間Ｑｐとしてこれまでにエンコードされた複数の前記フレームの平均Ｐｑｐを設定する段階の少なくとも１つから導き出され、
（２）において、
これまでにエンコードされた複数の前記フレームの中間Ｑｐは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Ｐｑｐ、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション（２）は、結果的に得られる前記中間Ｑｐが前記平均Ｐｑｐの特定の割合の範囲内であるときに使用され、
（３）において、Ｐｑｐが前記Ｐ‐ピクチャのランク（０）のＱｐである、請求項１に記載の方法。
【請求項１１】
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のＱｐに対して、より最終的なフレームＱｐを別に決定する段階を備える、請求項１に記載の方法。
【請求項１２】
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のＱｐに対して、より最終的なフレームＱｐを決定する段階を備える、請求項１に記載の方法。
【請求項１３】
初期のＰ‐ピクチャのランク（０）のＱｐと、Ｉ‐ピクチャ対Ｐ‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、Ｐ‐ピクチャのための推定されるビット数の値（P_est_bits）を、確立する段階を備える、請求項１に記載の方法。
【請求項１４】
機能性（Ｆ）‐ピクチャのための推定されるビット数の値（F_est_bits）を、初期のＰ‐ピクチャのランク（０）のＱｐと、Ｐ‐ピクチャ対Ｆ‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、前記Ｆ‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、請求項１に記載の方法。
【請求項１５】
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームを機能性（Ｆ）‐ピクチャに提供する前記オプションを提供する段階を備える、請求項８または１３に記載の方法。
【請求項１６】
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともＰ‐ピクチャ、機能性（Ｆ）‐ピクチャ、Ｂ‐ピクチャ、またはＩ‐ピクチャを含む、請求項１に記載の方法。
【請求項１７】
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームＱｐを決定する段階を備える、請求項１に記載の方法。
【請求項１８】
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファである、請求項１７に記載の方法。
【請求項１９】
バッファのバッファ充填量に応答する、フレームのためのより最終的なＱｐを決定する段階であって、
レベル応答型の複数のＱｐモデルで、前記フレームのビット数を推定する段階と、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証（ＶＢＶ）デルタを適用するかどうかを判断する段階と、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、
前記ＶＢＶデルタを適用すると判断された場合に前記ＶＢＶデルタによって調整される初期のＱｐおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なＱｐを決定する段階とを含み、
前記ＶＢＶデルタは、バッファステータスに関連付けられており、バッファの中間動作Ｑｐに対し前記初期のＱｐを調整すべく適用されており、
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームの前記ビット数を推定する前記段階に基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられている段階を備える、請求項１に記載の方法。
【請求項２０】
前記初期のＱｐは、ランク（０）のＰ‐ピクチャのＱｐである、請求項１９に記載の方法。
【請求項２１】
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、前記現在のフレームのためのより最終的なＱｐを形成する段階を備え、
前記事前分析する段階は、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の複雑度および動き特性を決定する段階を含む、請求項１に記載の方法。
【請求項２２】
デルタ値でより初期のＱｐを調整する段階に少なくとも部分的に基づいて、より最終的なＱｐを決定する段階を備え、
前記調整する段階は、デルタ値を
（１）複雑度デルタ、および
（２）バッファの充填量に関連付けられたビデオバッファ検証（ＶＢＶ）デルタを用いて決定する段階を含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
Ｉ‐ピクチャに対するフレームの全ビット量と、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと
フレームの前記全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタＱｐ係数スムージングとの少なくとも１つを含む、請求項２１に記載の方法。
【請求項２３】
使用されたビット数および分析された複数の前記フレームの複雑度を取得すべく、初期のＱｐの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第１のパス分析を実行する段階と、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントＱｐ近傍に、Ｑｐを維持すべく、デルタ値によって前記初期のＱｐを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームＱｐを決定すべく、第２のパス分析を実行する段階とを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されているフレームシーケンスの前記複雑度に関連付けられている、請求項１に記載の方法。
【請求項２４】
少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供する段階を備え、
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供する段階を備え、
Ｑｐと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク（０）のＰ‐ピクチャの初期のＱｐを形成する段階を備え、
前記ランク（０）のＩ‐ピクチャの複数のフレームの前記Ｑｐを形成すべく、少なくとも前記Ｐ‐ピクチャのランク（０）の複数のフレームの前記初期のＱｐを使用する段階を備え、
フレームのためのランク（０）のＩ‐ピクチャのＱｐ値を形成すべく、Ｐ‐ピクチャのランク（０）のＱｐ値の、ランク（０）のＩ‐ピクチャのＱｐ値に対する所定のマッピングを使用する段階を備え、
各非ゼロレべルのための固定初期フレームＱｐを決定する段階を備え、
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームＱｐが、前記非ゼロレベル上のすべてのフレームに対して確立され、
ランク（０）以外の複数のフレームの前記Ｑｐを、以下の式から導出する段階を備え、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク（０）の複数のＰ‐ピクチャのための初期のＱｐで、fpic_qは、前記ランク（０）の複数の機能性（Ｆ）‐ピクチャのために使用される前記初期のＱｐで、かつ、rは分析されている現在のフレームの前記ランクであり、
オプションとして、
複数の制限値をＱｐ値に適用する段階を備えており、
前記複数の制限値は、
（１）シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数（ｂｐｐ）との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
（２）シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
（３）複数のＱｐ制限値を判断するために使用される中間Ｑｐとしてこれまでにエンコードされた複数の前記フレームの平均Ｐｑｐを設定する段階の少なくとも１つから導き出され、
（２）において、
これまでにエンコードされた複数の前記フレームの中間Ｑｐは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Ｐｑｐ、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション（２）は、結果的に得られる前記中間Ｑｐが前記平均Ｐｑｐの特定の割合の範囲内であるときに使用され、
（３）において、Ｐｑｐは前記Ｐ‐ピクチャのランク（０）のＱｐであり、
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のＱｐに対して、より最終的なフレームＱｐを別に決定する段階を備え、
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のＱｐに対して、より最終的なフレームＱｐを決定する段階を備え、
前記初期のＰ‐ピクチャのランク（０）のＱｐと、Ｉ‐ピクチャ対Ｐ‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、Ｐ‐ピクチャのための推定されるビット数の値（P_est_bits）を、確立する段階を備え、
Ｆ‐ピクチャのための推定されるビット数の値（F_est_bits）を、初期のＰ‐ピクチャのランク（０）のＱｐと、Ｐ‐ピクチャ対Ｆ‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、前記Ｆ‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをＦ‐ピクチャに提供する前記オプションを提供する段階を備え、
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともＰ‐ピクチャ、Ｆ‐ピクチャ、Ｂ‐ピクチャ、またはＩ‐ピクチャを含む、
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームＱｐを決定する段階を備え、
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、
バッファのバッファ充填量に応答する、フレームのためのより最終的なＱｐを決定する段階であって、
レベル応答型の複数のＱｐモデルで、前記フレームのビット数を推定する段階と、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証（ＶＢＶ）デルタを適用するかどうかを判断する段階と、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、
前記ＶＢＶデルタを適用すると判断された場合に前記ＶＢＶデルタによって調整される前記初期のＱｐおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なＱｐを決定する段階とを含み、
前記ＶＢＶデルタは、バッファステータスに関連付けられており、バッファの中間動作Ｑｐに対し初期のＱｐを調整すべく適用されており、
前記１または複数の閾値は、前記バッファインクリメントのレートの閾値、および、前記バッファの前記充填量のバッファ推定の閾値の少なくとも１つであり、
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームのビット数を推定する段階に基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられている段階を備え、
前記初期のＱｐは、ランク（０）のＰ‐ピクチャのＱｐであり、
少なくとも以下の（Ａ）および（Ｂ）の１つを含んでおり、
（Ａ）ルックアヘッドを備える単一パスの分析を実行する段階であって、
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、前記現在のフレームのためのより最終的なＱｐを形成する段階を備え、
前記事前分析する段階は、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の前記複雑度および動き特性を決定する段階を含む、
デルタ値でより初期のＱｐを調整する段階に少なくとも部分的に基づいて、より最終的なＱｐを決定する段階を備え、
前記調整する段階は、デルタ値を
（１）複雑度デルタ、および
（２）バッファの充填量に関連付けられたビデオバッファ検証（ＶＢＶ）デルタを用いて決定する段階を含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
Ｉ‐ピクチャに対するフレームの全ビット量と、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、
フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタＱｐ係数スムージングとの少なくとも１つを含むルックアヘッドを備える単一パスの分析を実行する段階と、
（Ｂ）２パスの分析を実行する段階であって、
使用された前記ビット数および分析された複数の前記フレームの複雑度を取得すべく、前記初期のＱｐの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第１のパス分析を実行する段階と、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントＱｐ近傍に、Ｑｐを維持すべく、デルタ値によって前記初期のＱｐを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームＱｐを決定すべく、第２のパス分析を実行する段階とを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されている前記フレームシーケンスの前記複雑度に関連付けられている２パスの分析を実行する段階を備える、請求項１に記載の方法。
【請求項２５】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
前記グラフィックス処理ユニットは、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
少なくとも１つの現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する量子化パラメータ（Ｑｐ）を決定すると共に、ランク（０）以外の複数のフレームの前記量子化パラメータを、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出し、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されるよう構成されているコーダ。
【請求項２６】
さらに、少なくともはじめに、前記フレームの前記レベルが前記ベースレベルに近いほど、前記複数のフレームのためのより小さい量子化パラメータを提供し、
少なくともはじめに、すべての前記他の複数のレベルと比較して、前記複数のフレームのための最小の量子化パラメータを前記ベースレベルに提供し、
Ｑｐと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも前記ランク（０）のＰ‐ピクチャの初期のＱｐを形成し、
前記ランク（０）のＩ‐ピクチャの複数のフレームの前記Ｑｐを形成すべく、少なくとも前記Ｐ‐ピクチャのランク（０）の複数のフレームの前記初期のＱｐを使用し、
フレームのためのランク（０）のＩ‐ピクチャのＱｐ値を形成すべく、Ｐ‐ピクチャのランク（０）のＱｐ値の、ランク（０）のＩ‐ピクチャのＱｐ値に対する所定のマッピングを使用し、
各非ゼロレベルのための固定初期フレームＱｐを決定し、
非ゼロレベル上のフレームのタイプに関わらず、前記固定初期フレームＱｐが、前記非ゼロレベル上のすべてのフレームに対して確立され、
ランク（０）以外の複数のフレームの前記Ｑｐを、以下の式から導出し、
Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、前記ランク（０）の複数のＰ‐ピクチャのための初期のＱｐで、fpic_qは、前記ランク（０）の複数の機能性（Ｆ）‐ピクチャのために使用される前記初期のＱｐで、かつ、rは分析されている現在のフレームの前記ランクであり、
オプションとして、
複数の制限値をＱｐ値に適用し、
前記複数の制限値は、
（１）シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数（ｂｐｐ）との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、
（２）シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の前記フレームのための複数の制限値、
（３）複数のＱｐ制限値を判断するために使用される中間Ｑｐとしてこれまでにエンコードされた複数の前記フレームの平均Ｐｑｐを設定することの少なくとも１つから導き出され、
（２）において、
これまでにエンコードされた複数の前記フレームの中間Ｑｐは、
(avg_pqp)これまでにエンコードされたすべての前記フレームの複数の前記平均Ｐｑｐ、
(avg_cplx)平均時空複雑度、
(act_bits)これまでにエンコードされたすべての前記フレームに使用される全ビット数、
(cplx)前記現在のフレームの前記複雑度、および
(target_bits)前記現在のフレームを含む、すべての前記フレームのための全ターゲットビット数に基づいており、前記履歴のオプション（２）は、結果的に得られる前記中間Ｑｐが前記平均Ｐｑｐの特定の割合の範囲内であるときに使用され、
（３）において、Ｐｑｐは前記Ｐ‐ピクチャのランク（０）のＱｐであり、
前記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のＱｐに対して、より最終的なフレームＱｐを別に決定し、
前記フレームの前記ランクに少なくとも部分的に基づいて、初期のＱｐに対して、より最終的なフレームＱｐを決定し、
前記初期のＰ‐ピクチャのランク（０）のＱｐと、Ｉ‐ピクチャ対Ｐ‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、Ｐ‐ピクチャのための推定されるビット数の値（P_est_bits）を確立し、
Ｆ‐ピクチャのための推定されるビット数の値（F_est_bits）を、初期のＰ‐ピクチャのランク（０）のＱｐと、Ｐ‐ピクチャ対Ｆ‐ピクチャのビット率との間の所定の関係に基づいて確立することを備え、前記Ｆ‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをＦ‐ピクチャに提供する前記オプションを提供し、
フレームのビット数の推定は、線形モデルを用いて計算され、前記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の前記フレームタイプは、少なくともＰ‐ピクチャ、Ｆ‐ピクチャ、Ｂ‐ピクチャ、またはＩ‐ピクチャを含み、
バッファのビット容量に対する、前記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームＱｐを決定し、
前記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、
バッファのバッファ充填量に応答する、フレームのためのより最終的なＱｐを決定することであって、
レベル応答型の複数のＱｐモデルで、前記フレームのビット数を推定し、
バッファインクリメントのレートが閾値を超えているか否か、および、前記バッファの前記充填量のバッファ推定が閾値を超えているか否かの少なくとも一方に基づいてビデオバッファ検証（ＶＢＶ）デルタを適用するかどうかを判断し、
前記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、前記バッファインクリメントに関連付けられた複雑度デルタを計算し、
前記ＶＢＶデルタを適用すると判断された場合に前記ＶＢＶデルタによって調整される前記初期のＱｐおよび前記複雑度デルタに少なくとも部分的に基づいて、前記より最終的なＱｐを決定することとを含み、
前記ＶＢＶデルタは、バッファステータスに関連付けられており、バッファの中間動作Ｑｐに対し初期のＱｐを調整すべく適用されており、
前記１または複数の閾値は、前記バッファインクリメントのレートの閾値、および、前記バッファの前記充填量のバッファ推定の閾値の少なくとも１つであり、
前記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する前記ビット数の値であり、かつ前記フレームのビット数を推定することに基づいており、
前記バッファ推定はバッファ充填量値と前記バッファインクリメントの値とに関連付けられており、
前記初期のＱｐは、ランク（０）のＰ‐ピクチャのＱｐであり、
少なくとも以下の（Ａ）および（Ｂ）の１つを含んでおり、
（Ａ）ルックアヘッドを備える単一パスの分析を実行することであって、
現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析することに少なくとも部分的に依存して、前記現在のフレームのためのより最終的なＱｐを形成し、
前記事前分析することは、複数の前記ルックアヘッドフレームを完全にエンコードせずに、複数の前記ルックアヘッドフレームの複数の前記複雑度および動き特性を決定することを含み、
デルタ値でより初期のＱｐを調整することに少なくとも部分的に基づいて、より最終的なＱｐを決定し、
前記調整することは、デルタ値を
（１）複雑度デルタ、および
（２）バッファの充填量に関連付けられたビデオバッファ検証（ＶＢＶ）デルタを用いて決定することを含み、
前記複雑度デルタは、分析されている前記現在のフレームを有し、前記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、
前記適応量子化は、
Ｉ‐ピクチャに対するフレームの全ビット量と、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの前記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、
フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替えることを含む時間的複雑度マスキングと、
複数の連続するフレームの複数のデルタ値のデルタＱｐ係数スムージングとの少なくとも１つを含むルックアヘッドを備える単一パスの分析を実行することと、
（Ｂ）２パスの分析を実行することであって、
使用された前記ビット数および分析された複数の前記フレームの複雑度を取得すべく、前記初期のＱｐの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第１のパス分析を実行し、
前記シーケンスの複数の前記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントＱｐ近傍に、Ｑｐを維持すべく、デルタ値によって前記初期のＱｐを調整することによって、前記シーケンスの複数の前記フレームのためのより最終的なフレームＱｐを決定すべく、第２のパス分析を実行することを備え、
前記デルタ値は、バッファの充填量ステータスおよび分析されている前記フレームシーケンスの前記複雑度に関連付けられている２パスの分析を実行することを備えるよう構成されている、請求項２５に記載のコーダ。
【請求項２７】
ビデオコーディングのためのルックアヘッドを備える１パスレートコントロールのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する初期の量子化パラメータ（Ｑｐ）を決定する段階であって、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与される段階と、
現在のフレームに対する、複数の将来のフレームであり、かつ、複数のルックアヘッドフレームを完全にエンコードせずに、前記複数のルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を決定すべく、分析された、多数のルックアヘッドフレームを事前分析する段階と、
前記現在のフレームの前記初期のＱｐを調整すべく、前記複数のルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なＱｐを決定する段階とを備え、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供され、
前記初期の量子化パラメータを決定する段階は、
ランク（０）以外の複数のフレームの前記初期の量子化パラメータを、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出する段階を有する、方法。
【請求項２８】
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定する段階に少なくとも部分的に基づいて、より最終的なＱｐを決定する段階を備え、
前記バッファは、前記ルックアヘッドの複数の将来のフレームのためのスペースを含む、請求項２７に記載の方法。
【請求項２９】
バッファステータスを決定する前記段階は、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントＱｐに近づけるべく、複数のフレームのための現在のＱｐを変調する段階を含む、請求項２８に記載の方法。
【請求項３０】
前記より最終的なＱｐを決定する段階は、前記バッファの前記充填量ステータスに関連付けられたビデオバッファ検証デルタで少なくとも部分的に形成されたデルタ値によって、初期のＱｐを調整する段階を含む、請求項２８に記載の方法。
【請求項３１】
前記より最終的なＱｐを決定する段階は、分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタで少なくとも部分的に形成されたデルタ値によって、初期のＱｐを調整する段階を含む、請求項２８に記載の方法。
【請求項３２】
前記複雑度デルタは、
適応量子化を実行する段階、および
前記フレームシーケンスの平均複雑度を使用する段階によって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含む、請求項３１に記載の方法。
【請求項３３】
前記複雑度デルタは、適応量子化を実行する段階によって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、Ｉ‐ピクチャに対する、かつ、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定される、請求項３１に記載の方法。
【請求項３４】
ＶＢＶデルタ後の結果的に得られるＱｐが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるＱｐを調整する、請求項３１に記載の方法。
【請求項３５】
前記より最終的なＱｐを決定する段階は、適応量子化を実行することによって初期のＱｐを調整する段階と、
複数の連続するフレーム間のＱｐの変化を制限するためのＶＢＶのＱｐ係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、
前記適応量子化は、前記初期のＱｐを調整するための前記デルタを形成する、請求項３１に記載の方法。
【請求項３６】
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定する段階に少なくとも部分的に基づいて、より最終的なＱｐを決定する段階を備え、
前記バッファは、前記ルックアヘッドの複数の将来のフレームのためのスペースを含み、
バッファステータスを決定する前記段階は、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントＱｐに近づけるべく、複数のフレームのための現在のＱｐを変調する段階を含み、
前記より最終的なＱｐを決定する段階は、
前記バッファの充填量ステータスに関連付けられたビデオバッファ検証デルタと、
分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタとの、少なくとも１つによって部分的に形成されたデルタ値による、初期のＱｐを調整する段階を含み、
前記複雑度デルタは、
適応量子化を実行する段階、および
前記フレームシーケンスの平均複雑度を使用する段階によって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含み、
前記複雑度デルタは、適応量子化を実行する段階によって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、Ｉ‐ピクチャに対する、かつ、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定され、
ＶＢＶデルタ後の結果的に得られるＱｐが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるＱｐを調整する、
前記より最終的なＱｐを決定する段階は、適応量子化を実行することによって初期のＱｐを調整する段階と、
複数の連続するフレーム間のＱｐの変化を制限するためのＶＢＶのＱｐ係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、
前記適応量子化は、前記初期のＱｐを調整するための前記デルタを形成する、請求項２７に記載の方法。
【請求項３７】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
前記グラフィックス処理ユニットは、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
現在のフレームの前記階層の前記レベルに少なくとも依存して、複数の前記フレームに対する初期の量子化パラメータ（Ｑｐ）を決定すると共に、ランク（０）以外の複数のフレームの前記初期の量子化パラメータを、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出し、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与され、
現在のフレームに対する、複数の将来のフレームであり、かつ、複数のルックアヘッドフレームを完全にエンコードせずに、前記複数のルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を決定すべく分析された、多数のルックアヘッドフレームを事前分析し、
前記現在のフレームの前記初期のＱｐを調整すべく、前記複数のルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なＱｐを決定し、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供されるよう構成されているコーダ。
【請求項３８】
さらに、
デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを決定することに少なくとも部分的に基づいて、より最終的なＱｐを決定し、
前記バッファは、ルックアヘッドの複数の将来のフレームのためのスペースを含み、
バッファステータスを決定することは、前記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントＱｐに近づけるべく、複数のフレームのための現在のＱｐを変調することを含み、
前記より最終的なＱｐを決定することは、
前記バッファの充填量ステータスに関連付けられたビデオバッファ検証デルタと、
分析されている、前記現在のフレームおよび複数の前記ルックアヘッドフレームを含むフレームシーケンスの前記複雑度に関連付けられた複雑度デルタとの、少なくとも１つによって部分的に形成されたデルタ値による、初期のＱｐを調整することを含み、
前記複雑度デルタは、
適応量子化を実行すること、および
前記フレームシーケンスの平均複雑度を使用することによって形成され、
前記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、
前記フレームシーケンスの平均複雑度は、複数の前記ルックアヘッドフレームの複数の前記複雑度を含み、
前記複雑度デルタは、適応量子化を実行することによって形成され、
前記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、Ｉ‐ピクチャに対する、かつ、前記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、
前記フレームシーケンスは、複数の前記ルックアヘッドフレームの複数の前記複雑度を少なくとも部分的に使用することによって、低い複雑度であると決定され、
ＶＢＶデルタ後の結果的に得られるＱｐが適用され、バッファの充填量ステータスに関連付けられており、前記複雑度デルタを適用することによって、前記結果的に得られるＱｐを調整し、
前記より最終的なＱｐを決定することは、適応量子化を実行することによって初期のＱｐを調整することと、
複数の連続するフレーム間のＱｐの変化を制限するためのＶＢＶのＱｐ係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の前記フレームのタイプとランクの組み合わせに依存して、デルタを形成することとを含んでおり、
前記適応量子化は、前記初期のＱｐを調整するための前記デルタを形成するように構成されている、請求項３７に記載のコーダ。
【請求項３９】
ビデオコーディングのための２パスレートコントロールのためのコンピュータ実装方法であって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階と、
分析される各フレームのための初期の既定の量子化パラメータ（Ｑｐ）を用いて第１のパス分析を実行する段階と、
個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ（Ｑｐ）を決定する段階を含む第２のパス分析を実行する段階と、
コーディングに使用されるフレームのためのターゲットＱｐ、および前記第１のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を決定する段階とを備え、
前記第１のパス分析を実行する段階において、複数の前記初期の既定のＱｐは、現在のフレームの前記階層の前記レベルに少なくとも部分的に基づいて確立され、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されており、ランク（０）以外の複数のフレームの前記初期の既定のＱＰは、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出され、かつ、前記第１のパス分析を実行する段階は、分析される複数の前記フレームのための複雑度およびビット数を決定するのに十分なように複数の前記フレームをエンコーディングする段階を含み、
前記第２のパス分析を実行する段階は、１または複数のフレームの品質を強化すべく、適応量子化を実行する段階を含み、前記適応量子化を実行する段階は、同一のシーケンス内の少なくとも１つの他のフレームのためのビット量を減少させつつ、少なくとも１つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含み、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される方法。
【請求項４０】
前記第１のパス分析は、前記シーケンス内のすべての前記フレームをエンコードする、請求項３９に記載の方法。
【請求項４１】
複雑度、ビットレート、およびＱｐの間の所定の関係を使用することによって、前記初期の既定のランク（０）のＰ‐ピクチャが形成される、請求項３９に記載の方法。
【請求項４２】
フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングする段階を備える、請求項３９に記載の方法。
【請求項４３】
前記適応量子化を実行する段階は、Ｉ‐フレームに対する、かつ、前記Ｉ‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含む、請求項３９に記載の方法。
【請求項４４】
前記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含む、請求項３９に記載の方法。
【請求項４５】
スケーリングする段階および前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記方法は、前記第１のパス分析および前記ターゲットビットフレームサイズ（tgt_size）において決定された、前記フレームの前記ビット数およびＱｐに依存して、フレームのコーディングのための推定される最終的なＱｐを決定する段階を含む、請求項３９に記載の方法。
【請求項４６】
前記適応量子化を実行する段階は、デルタＱｐ係数を形成し、かつ、
複数の連続するフレーム間のＱｐの変化を制限するための複数の連続するフレームのＱｐ係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存する、請求項３９に記載の方法。
【請求項４７】
分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なＱｐを決定する段階を備える、請求項３９に記載の方法。
【請求項４８】
前記反復は、適応量子化のデルタＱｐ係数も考慮する、請求項４７に記載の方法。
【請求項４９】
前記反復は、前記第１のパス分析からのフレーム毎の前記ビット数およびＱｐも考慮する、請求項４７に記載の方法。
【請求項５０】
前記反復は、
段階値に基づき、テストＱｐ値を設定する段階と、
選択されたフレームのための予想される全ビット数を計算する段階と、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストＱｐ値を別に変更する段階と、
テストＱｐを有限回数に設定することで、処理を再開する段階とを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタＱｐ係数、および前記第１のパス分析からのフレーム毎のビット数およびＱｐに少なくとも部分的に基づいている、請求項４７に記載の方法。
【請求項５１】
前記第１のパス分析は、前記シーケンス内のすべての前記フレームをエンコードし、
複雑度、ビットレート、およびＱｐの間の所定の関係を使用することによって、前記初期の既定のランク（０）のＰ‐ピクチャが形成され、
フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングする段階を備え、
前記適応量子化を実行する段階は、Ｉ‐フレームに対する、かつ、前記Ｉ‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、
前記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、
スケーリングする段階および前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記方法は、前記第１のパス分析および前記ターゲットビットフレームサイズ（tgt_size）において決定された、前記フレームの前記ビット数およびＱｐに依存して、フレームのコーディングのための推定される最終的なＱｐを決定する段階を含み、
前記適応量子化を実行する段階は、デルタＱｐ係数を形成し、かつ、
複数の連続するフレーム間のＱｐの変化を制限するための複数の連続するフレームのＱｐ係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存し、
分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なＱｐを決定する段階を備え、
前記反復は、適応量子化の前記デルタＱｐ係数も考慮し、
前記反復は、前記第１のパス分析からのフレーム毎の前記ビット数およびＱｐも考慮し、
前記反復は、
段階値に基づき、テストＱｐ値を設定する段階と、
選択されたフレームのための予想される全ビット数を計算する段階と、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストＱｐ値を別に変更する段階と、
テストＱｐを有限回数に設定することで、処理を再開する段階とを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタＱｐ係数、および前記第１のパス分析からのフレーム毎のビット数およびＱｐに少なくとも部分的に基づいている、請求項３９に記載の方法。
【請求項５２】
イメージバッファと、
グラフィックス処理ユニットとを備えるコーダであって、
入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得し、
分析される各フレームのための初期の既定の量子化パラメータ（Ｑｐ）を用いて第１のパス分析を実行し、
個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ（Ｑｐ）を決定することを含む第２のパス分析を実行することと、
コーディングに使用されるフレームのためのターゲットＱｐ、および前記第１のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を決定することとを備え、
前記第１のパス分析を実行することにおいて、複数の前記初期の既定のＱｐは、現在のフレームの前記階層の前記レベルに少なくとも部分的に基づいて確立され、各フレームは前記フレームが存在する前記レベルに関連付けられたランクが付与されており、ランク（０）以外の複数のフレームの前記初期の既定のＱＰは、Qpr = inter_q[0]＋デルタ係数×r（但し、inter_q[0]は既定値、rは分析されている現在のフレームの前記ランク）から導出され、かつ、前記第１のパス分析を実行することは、分析される複数の前記フレームのための複雑度およびビット数を決定するのに十分なように複数の前記フレームをエンコーディングすることを含み、
前記第２のパス分析を実行することは、１または複数のフレームの品質を強化すべく、適応量子化を実行することを含み、前記適応量子化を実行することは、同一のシーケンス内の少なくとも１つの他のフレームのためのビット量を減少させつつ、少なくとも１つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含み、
前記マルチレベル階層は、
複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ‐ピクチャまたはそれら両方を少なくとも備えるベースレベルと、
前記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、
複数の参照フレームとして使用されず、かつ、他の複数のレベルの前記複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、
複数のＰ‐ピクチャは、前記順序に関連して複数の過去のフレームを複数の参照として使用し、
前記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供されるよう構成されているコーダ。
【請求項５３】
前記第１のパス分析は、前記シーケンス内のすべての前記フレームをエンコードし、
複雑度、ビットレート、およびＱｐの間の所定の関係を使用することによって、前記初期の既定のランク（０）のＰ‐ピクチャが形成され、
前記コーダは、フレーム毎のターゲットビット数に一致させるべく、複数の前記フレームをスケーリングするよう構成されており、
前記適応量子化を実行することは、Ｉ‐フレームに対する、かつ、前記Ｉ‐フレームを参照として使用する複数の前記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、
前記適応量子化を実行することは、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、
スケーリングすることおよび前記適応量子化は、ターゲットビットフレームサイズをもたらし、
前記第１のパス分析および前記ターゲットビットフレームサイズ（tgt_size）において決定された、前記フレームの前記ビット数およびＱｐに依存して、フレームのコーディングのための推定される最終的なＱｐを決定することを含み、
前記適応量子化を実行することは、デルタＱｐ係数を形成し、かつ、
複数の連続するフレーム間のＱｐの変化を制限するための複数の連続するフレームのＱｐ係数スムージングを含み、かつ、複数の前記フレームのタイプとランクの組み合わせに依存し、
前記コーダは、分析されている前記フレームのフレームランクおよびタイプを考慮する反復を使用することによって、より最終的なＱｐを決定するよう構成されており、
前記反復は、適応量子化の前記デルタＱｐ係数も考慮し、
前記反復は、前記第１のパス分析からのフレーム毎の前記ビット数およびＱｐも考慮し、
前記反復は、
段階値に基づき、テストＱｐ値を設定することと、
選択されたフレームのための予想される全ビット数を計算することと、
前記予想される全ビット数を、閾値としてのターゲットビット数の値と比較することと、
前記予想される全ビット数が前記閾値を超えているかどうかによって、前記テストＱｐ値を別に変更することと、
テストＱｐを有限回数に設定することで、処理を再開することとを含み、
前記予想される全ビット数は、分析されている前記フレームのフレームランクおよびタイプ、適応量子化のデルタＱｐ係数、および前記第１のパス分析からのフレーム毎のビット数およびＱｐに少なくとも部分的に基づいているように構成されている、請求項５２に記載のコーダ。
【請求項５４】
コンピューティングデバイス上での実行に応答して、前記コンピューティングデバイスに対し、請求項１から２４のいずれか一項に記載の方法を実行させる、少なくとも１つのプログラム。
【請求項５５】
コンピュータによって請求項１から２４のいずれか一項に記載の方法を実行する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
本出願は、２０１３年１月３０日に出願された、「次世代ビデオコーディング」という発明の名称の米国仮出願第６１／７５８，３１４の利益を主張する。
【背景技術】
【０００２】
ビデオエンコーダは、特定の帯域幅を介して、より多くの情報が送信され得るように、ビデオ情報を圧縮する。すると、圧縮された信号は、表示に先立ち上記信号をデコードまたは展開するデコーダを有する受信機に送信され得る。
【０００３】
Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＳＯ／ＩＥＣのムービングピクチャエキスパーツグループ（ＭＰＥＧ）およびＩＴＵ−Ｔのビデオコーディングエキスパーツグループ（ＶＣＥＧ）によって形成された、ジョイントコラボレーティブチームオンビデオコーディング（ＪＣＴ−ＶＣ）によって開発されている、最新のビデオ圧縮規格である。ＨＥＶＣは、以前のＨ．２６４／ＡＶＣ  （Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）規格が、複数の、より高い解像度のビデオアプリケーションを進化させるために十分な圧縮を提供しないことに応じて、開発されている。以前のビデオコーディング規格と同様、ＨＥＶＣは、イントラ予測／インター予測、変換、量子化、インループフィルタリング、およびエントロピーコーディングといった、複数の基本的な機能モジュールを含む。
【０００４】
現行のＨＥＶＣ規格は、Ｈ．２６４／ＡＶＣ規格の複数の制限に対する改善を試み得る。それら制限とは、許容される複数の予測パーティションおよび複数のコーディングパーティションに対する限定的な複数の選択肢、限定的な許容される複数の参照および予測生成、限定的な複数の変換ブロックサイズおよび複数の実際の変換、複数のコーディングアーチファクトを減少させるための限定的な複数のメカニズム、および複数の不十分なエントロピーエンコーディング技術といったものである。しかしながら、現行のＨＥＶＣ規格はこのような複数の問題の解決にあたり、対話型アプローチを使用することができる。
【０００５】
例えば、増加の一途をたどる圧縮されるビデオの解像度および高いビデオ品質に対する期待に伴い、H.264のような複数の既存のビデオコーディング規格またはH.265/HEVCのような進化中ですらある複数の規格を使用するコーディングに必要とされる、対応のビットレート／帯域幅は比較的高い。上記複数の規格は、複数の従来アプローチの複数の拡張形態を使用し、不十分な圧縮／品質の問題を暗黙に対処するが、しばしばそれらの結果は限定的である。
【０００６】
本記載は、次世代ビデオ（ＮＧＶ）コーデックプロジェクトの文脈において展開され、複数のデバイスへの実装にあたり十分実用的でありつつ、実現可能な圧縮効率を最大化する、高度なビデオコーデックを設計する一般的問題に対処する。例えば、複数の優れたディスプレイの利用可能性に起因し、増加の一途をたどるビデオ解像度および高いビデオ品質への期待に伴い、以前の複数のＭＰＥＧ規格および、より最新のＨ．２６４／ＡＶＣ規格等の既存の複数のビデオコーディング規格の使用に必要とされる、対応のビットレート／帯域幅は比較的高い。H.264/AVCは、複数の、より高い解像度のビデオアプリケーションの進化のための十分高い圧縮率を提供することを意識していなかった。
【０００７】
本明細書に記載の内容は、例示であり、複数の添付図面における限定ではない。説明の簡素化および明確化のため、複数の図面内の複数の要素は、必ずしも正確な縮尺ではない。例えば、明確化のため、一部の要素の複数の寸法は、他の複数の要素に対し、誇張されていることがある。さらに、必要に応じて、対応するまたは類似の複数の要素を示すべく、複数の図面にわたり、複数の参照番号が繰り返される。以下、図面の簡単な説明を記載する。
【図面の簡単な説明】
【０００８】
【図１】次世代ビデオエンコーダの一例に係る例示的な図である。
【図２】次世代ビデオデコーダの一例に係る例示的な図である。
【図３Ａ】次世代ビデオエンコーダおよび複数のサブシステムの一例に係る例示的な図である。
【図３Ｂ】次世代ビデオデコーダおよび複数のサブシステムの一例に係る例示的な図である。
【図４】本開示に係る量子化アダプタレートコントロールの図である。
【図５】本開示に係る２パス量子化アダプタレートコントロールの図である。
【図６】量子化アダプタレートコントロール処理のフローチャートである。
【図７】１パス量子化アダプタレートコントロール処理のフローチャートである。
【図８】階層フレーム構造内のフレームシーケンスの例示的な図である。
【図９】レートコントロールスタートアップ処理のフローチャートである。
【図１０】階層フレーム構造の例示的な図である。
【図１１】階層フレーム構造の例示的な図である。
【図１２】Ｑｐ値に対する複雑度の一次関係を示すグラフである。
【図１３】Ｑｐ値に対する複雑度の二次関係を示すグラフである。
【図１４】ターゲットビットレートのｂｐｐ対ｂｐｐ＿ｉｄマッピングを示すテーブルである。
【図１５】複雑度基準のｃｐｘ対ｃｐｘ＿ｉｄマッピングを示すテーブルである。
【図１６】中間のＱｐ値のテーブルである。
【図１７】最小Ｑｐ値のテーブルである。
【図１８】最大Ｑｐ値のテーブルである。
【図１９】Ｉ対Ｐビット率に対するＱｐのグラフである。
【図２０】バッファの例示的な図である。
【図２１】複数のバッファインクリメントのための複数のレート閾値のテーブルである。
【図２２Ａ】２パス量子化アダプタレートコントロール処理の例示的なフローチャートである。
【図２２Ｂ】２パス量子化アダプタレートコントロール処理の例示的なフローチャートである。
【図２３】ルックアヘッドを備えた１パス量子化レートコントール処理の例示的なフローチャートである。
【図２４】ビデオコーディングシステムの一例に係る例示的な図である。
【図２５】システムの一例に係る例示的な図である。
【図２６】例示的なデバイスを示す。本開示の少なくとも一部の実装に従ってすべて配置されている。
【発明を実施するための形態】
【０００９】
１または複数の実装が、複数の添付図面を参照して記載される。特定の複数の構成および配置が記載される一方で、これは例示目的にすぎないことを理解されたい。関連技術分野における当業者であれば、本記載の精神および範囲を逸脱することなく、他の複数の構成および配置が使用され得ることを認識するであろう。関連技術分野における当業者にとって、本明細書に記載の複数の技術および／または配置はまた、本明細書に記載された以外の他の様々なシステムおよびアプリケーションにおいて使用可能であることが明らかである。
【００１０】
以下の詳細な説明は、例えば、システムオンチップ（ＳｏＣ）等の複数のアーキテクチャ内で示され得る様々な実装を記載する一方で、本明細書に記載の複数の技術および／または配置の実装は、複数の特定のアーキテクチャおよび／またはコンピューティングシステムに限定されず、本明細書に記載の複数の技術および／または配置の実装は、同様の複数の目的のための任意のアーキテクチャおよび／またはコンピューティングシステムによって実装可能である。例えば、複数の集積回路（ＩＣ）チップおよび／または複数のパッケージ、および／または様々なコンピューティングデバイスおよび／または複数のセットトップボックス、複数のスマートフォン等のコンシューマエレクトロニック（ＣＥ）デバイスなどを使用する、様々なアーキテクチャは、本明細書に記載の複数の技術および／または配置を実装してよい。さらに、以下の詳細な説明は、複数のロジック実装、複数のシステムコンポーネントの複数のタイプおよび複数の相互関係、複数のロジックパーティショニング／統合の選択肢等、たくさんの具体的詳細について記載する可能性のある一方で、特許請求される主題は、そのような複数の具体的な詳細がなくても実行され得る。他の複数の例において、本明細書に開示の内容を不明瞭にするのを避けるべく、複数のコントロール構造および複数の完全なソフトウェア命令シーケンス等の一部の内容は、詳細に記載されない可能性がある。
【００１１】
本明細書に開示の内容は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実装可能である。本明細書に開示の内容は、１または複数のプロセッサによって読み取りおよび実行可能な、機械可読媒体上に格納された複数の命令としても実装可能である。機械可読媒体は、機械（コンピューティングデバイス等）によって読み取られ得る形態で情報を格納または送信するための任意の媒体および／またはメカニズムを含んでよい。例えば、機械可読媒体は、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶装置、複数のフラッシュメモリデバイス、複数の伝播信号の電気的、光学的、音響的または他の形態（例えば、複数の搬送波、複数の赤外線信号、複数のデジタル信号等）、およびその他複数を含んでよい。
【００１２】
本明細書における「一実装」、「ある実装」、「一実装例」等の複数の表現は、本明細書に記載の実装は、特定の機能、構造、または特性を含み得るが、各実施形態は必ずしも当該特定の機能、構造、特性を含まなくてよいことを示す。さらに、そのような複数の表現は、必ずしも同一の実装を言及しない。さらに、ある実施形態に関連して、特定の機能、構造、または特性が記載されている場合、本明細書で明示に記載されてようが、されまいが、他の複数の実装に関連してそのような機能、構造、または特性を達成することは、当業者の知識の範囲内であると想定されている。
【００１３】
本明細書で使用される、「コーダ」という用語は、エンコーダおよび／またはデコーダを指してよい。同様に、本明細書で使用される、「コーディング」という用語は、エンコーダを介してビデオエンコーディングを実行することおよび／またはデコーダを介してビデオデコーディングを実行することを指してよい。例えば、ビデオエンコーダおよびビデオデコーダは両方とも、ビデオデータをコーディング可能な複数のコーダの例であってよい。また、本明細書で使用される、「コーデック」という用語は、任意の処理、プログラムまたは例えば、エンコーダおよび／またはデコーダを実装可能なソフトウェア、ファームウェア、および／またはハードウェアの任意の組み合わせ等の一連の動作を指してよい。さらに、本明細書で使用される、「ビデオデータ」という語句は、例えば、複数のビデオフレーム、イメージデータ、エンコードされたビットストリームデータ等のビデオコーディングに関連付けられた任意のタイプのデータを指してよい。
【００１４】
複数のシステム、装置、物品、および複数の方法が、高効率な次世代ビデオコーディングのための量子化による、コンテンツ適応ビットレートおよび品質管理に関連して以下に記載される。
【００１５】
上述のように、良好な進歩を遂げているものの、複数のデバイスへの実装にあたり十分実用的でありつつ、圧縮効率の最大化のためにＨＥＶＣ規格が不十分である可能性のある原因については複数の理由がある。具体的には、ビデオエンコーダは、レートコントローラ（ＲＣ）またはビットレートコントローラ（ＢＲＣ）を有しているが、それらが改善の余地がある。場合によっては、ビデオエンコーダのこのコンポーネントは、スタンドアロンである一方で、レートのひずみを含むエンコーディングの多くの態様を管理し、かつ、固定ビットレート（ＣＢＲ）コーディングが有効なときの全体のビットレートを管理し得る、エンコードコントローラと呼ばれる、より大きなコンポーネントの一部である場合もある。
【００１６】
Ｈ．２６４／ＡＶＣビデオコーディングに関連して使用される、典型的なレートコントローラまたはビットレートコントローラ（エンコードコントローラの複数のコンポーネント）は、非常に限定的である。というのは、当該規格は、ＨＥＶＣまたは本明細書で開示されるものと同程度にビットレート効率が高くないからである。ある規格の洗練された複数の実装が利用可能になると、ある規格専用の優れたレートコントローラが利用可能になることが典型的であるため、かつ、ＨＥＶＣは比較的新しいため、複数の優れたレートコントローラを有しているＨＥＶＣエンコーダ実装は多くない。複数の最先端規格のおよび今後現れるＨ．２６４等のＨＥＶＣ規格に関する上記複数の限定は、本明細書に記載の新規かつ革新的なレートコントローラによって対処され、ＮＧＶの文脈において適用されるが、ＨＥＶＣエンコーディングにも適用可能である。
【００１７】
ＮＧＶビデオコーディングは、複数の規格ベースの複数のアプローチとは異なる。というのは、ＮＧＶビデオコーディングは、より高い圧縮を実現すべく、ビデオコーディング処理に、有意義なコンテンツベースの適応能力を自然に組み込むからである。これに対し、複数の規格ベースのビデオコーディングアプローチは通常、複数のレガシアプローチの複数の適応および微調整によって、複数のより高いゲインを圧迫する傾向がある。例えば、あらゆる規格ベースのアプローチは、複数のゲインを実現すべく、複数の予測差分を減少するための主要な手段として、動き補償されたフレーム間コーディングの適用およびさらなる微調整に過度に依存する。一方で、ＮＧＶは、動きによる複数のフレーム間差分の使用に加え、典型的な複数のビデオシーンに自然に存在する、他の複数のタイプの複数のフレーム間差分（ゲイン、ブラー、レジストレーション）も使用する。
【００１８】
従って、エンコーダコントローラは、一例の形態において、フレーム間で量子化パラメータＱｐ（量子化（ｑｕａｎｔｉｚｅｒ）とも言う）を変える量子化アダプタおよびレートコントロールを有してよい。また、量子化アダプタおよびレートコントロールが上記処理を行うのは、フレームシーケンス上の、ピラミッド若しくは階層的参照フレームの依存関係構造上のフレームレベル（本明細書においてランクとも言う）に基づいて行う。フレームシーケンスとは、ピクチャグループ（ＧＯＰ）、ビデオ、シーンであってよく、またはそれらの一部であってよく、あるいは他の任意のフレームシーケンスであってよい。この方法およびシステムは、複数の高品質なイメージを犠牲にすることなく、高い圧縮を取得する。この量子化構成は、バッファの充填量またはステータスにより、Ｑｐを変調すべく、バッファコントロールおよびバッファモデルを使用する、１パスの固定ビットレート（ＣＢＲ）レートコントロールシステム内で実行可能である。一例として、そのようなバッファは、デコーダバッファのサイズおよび動作を模倣するエンコーダにおける仮想バッファであってよい。あるいは、２パス（またはマルチパス）可変ビットレート（ＶＢＲ）システムが使用されてよい。２パス可変ビットレートシステムとは、どのフレームがより複雑（または特別な注意が必要）で、どのフレームがより多くの詳細を必要とする可能性があるかを判断すべく、フレームシーケンス上で第１のパス分析を実行する。その後、２パス可変ビットレートシステムは、第１のパス分析に照らし、より効率的なコーディングのために、複数のフレームのＱｐを変更する少なくとも第２のパス分析を実行する。この代替手段は、フレームシーケンスを２回分析する十分な時間があるときに、使用されてよい。例えば、複数の非ライブ（あるいは非リアルタイム）メディアフォーマットとの場合などである。ルックアヘッドを持つ、１パスのＶＢＲレートコントロールと呼ばれる第３のシステムは、フレームの複雑度を判断するに先立ち、完全な第１のパス分析を実行する代わりに、システムが単に特定数のフレームを検索するという妥協案を提供する。これらの技法およびシステムを以下に説明する。
【００１９】
詳細について図１を参照するに、図１は、本開示の少なくとも一部の実装に従って配置された次世代ビデオエンコーダ１００の一例の説明図である。図示の通り、エンコーダ１００は入力ビデオ１０１を受信してよい。入力ビデオ１０１は、例えばビデオシーケンスの複数の入力フレーム等をエンコーディングするための任意の好適な入力ビデオを含んでよい。図示の通り、入力ビデオ１０１はコンテンツプレアナライザモジュール１０２を介して受信されてよい。コンテンツプレアナライザモジュール１０２は、ビデオコーディングの効率および速度性能を向上させるために、様々なタイプのパラメータを判断すべく、入力ビデオ１０１の複数のビデオフレームのコンテンツの分析を実行するよう構成されてよい。例えば、コンテンツプレアナライザモジュール１０２は、水平勾配情報および鉛直勾配情報（例えば、Ｒｓ、Ｃｓ）、分散、ピクチャ毎の空間複雑度、ピクチャ毎ごとの時間的な複雑度、シーンの変更検出、動き範囲推定、ゲイン検出、予測距離推定、オブジェクト推定の数、領域境界検出、空間複雑度マップ計算、フォーカス推定、フィルム粒子推定等を判断してよい。コンテンツプレアナライザモジュール１０２によって生成される複数のパラメータは、エンコーダ１００（例えば、エンコードコントローラ１０３を介して）によって使用され、および／または量子化され、デコーダに通信されてよい。図示の通り、複数のビデオフレームおよび／または他のデータは、コンテンツプレアナライザモジュール１０２から適応ピクチャオーガナイザモジュール１０４に送信されてよい。適応ピクチャオーガナイザモジュール１０４は、各ビデオフレームのピクチャタイプ（例えば、Ｉ‐、Ｐ‐、またはＦ／Ｂピクチャ）を判断し、必要に応じて、当該複数のビデオフレームの順序を変えてよい。いくつかの例において、適応ピクチャオーガナイザモジュール１０４は、複数のフレーム部分を生成すべく構成されたフレーム部分ジェネレータを含んでよい。いくつかの例において、コンテンツプレアナライザモジュール１０２および適応ピクチャオーガナイザモジュール１０４を合わせて、エンコーダ１００のプレアナライザサブシステムと考えられてよい。
【００２０】
図示の通り、複数のビデオフレームおよび／または他のデータは、適応ピクチャオーガナイザモジュール１０４から、予測パーティション生成モジュール１０５へと送信されてよい。いくつかの例において、予測パーティション生成モジュール１０５は、フレームまたはピクチャを複数のタイルまたは複数のスーパーフラグメント等に分割してよい。いくつかの例において、フレームまたはピクチャを複数のタイルまたは複数のスーパーフラグメントへ分割するための追加モジュール（例えばモジュール１０４および１０５との間）が提供されてよい。予測パーティション生成モジュール１０５は、各タイルまたはスーパーフラグメントを複数の潜在的予測パーティショニングまたは複数のパーティションに分割してよい。いくつかの例において、複数の潜在的予測パーティショニングは、ｋ−ｄ木パーティショニング技術、二分木パーティショニング技術等のパーティショニング技術を使用して判断されてよい。ｋ−ｄ木パーティショニング技術および二分木パーティショニング技術は、複数の個別のビデオフレームのピクチャタイプ（Ｉ‐、Ｐ‐、またはＦ／Ｂピクチャ）、分割されるフレーム部分の特性等に基づいて判断され得る。いくつかの例において、判断された複数の潜在的予測パーティショニングは、予測のための複数のパーティション（インター予測またはイントラ予測）であってよく、また、判断された複数の潜在的予測パーティショニングは、複数の予測パーティションまたは複数の予測ブロック等として表現されてよい。
【００２１】
いくつかの例において、選択された予測パーティショニング（複数の予測パーティション）は、複数の潜在的予測パーティショニングから判断されてよい。例えば、選択された予測パーティショニングは、各潜在的予測パーティショニングに対し、複数の特性および複数の動きベースのマルチ参照予測または複数のイントラ予測を使用する複数の予測の判断、および複数の予測パラメータの判断に基づいてよい。各潜在的予測パーティショニングに対し、潜在的予測エラーは、複数の元のピクセルと複数の予測ピクセルとの差分を取ることで判断されてよく、選択された予測パーティショニングは、最小の予測エラーを有する潜在的予測パーティショニングであってよい。他の複数の例において、選択された予測パーティショニングは、パーティショニングをコーディングするためのビット数に基づく重み付けスコア法を含むレート歪み最適化、および予測パーティショニングに関連付けられた予測エラーに基づいて判断されてよい。
【００２２】
図示の通り、選択された予測パーティショニング（現在のフレームの複数の予測パーティション等）の複数の元のピクセルは、ディフェレンサ１０６において、複数の予測されたパーティション（参照フレームまたは複数のフレームおよびインター予測データまたはイントラ予測データ等の他の予測データに基づく、現在のフレームの予測パーティションの予測等）を用いて差分を取られてよい。複数の予測されたパーティションの判断について、以下にさらに詳しく記載する。複数の予測されたパーティションの判断は図１に示される通り、デコードループ１３５を含んでよい。差分からの任意の残留物または残留データ（パーティション予測エラーデータ等）は、コーディングパーティションジェネレータモジュール１０７に送信されてよい。いくつかの例において、任意のピクチャタイプ（Ｉ‐、Ｆ／Ｂ‐またはＰ‐ピクチャ）における複数の予測パーティションのイントラ予測等については、コーディングパーティションジェネレータモジュール１０７は、スイッチ１０７ａおよび１０７ｂを介して迂回されてよい。そのような複数の例においては、単一レベルのパーティショニングのみが実行されてよい。そのようなパーティショニングは、予測パーティショニング（前述の通り）またはコーディングパーティショニングあるいはそれら両方として表現されてよい。様々な例において、そのようなパーティショニングは、予測パーティション生成モジュール１０５（前述の通り）を介して実行されてよく、あるいは本明細書にさらに詳細に記載される通り、そのようなパーティショニングは、コーディングパーティションジェネレータモジュール１０７を介して実装される、ｋ‐ｄ木イントラ予測／コーディングパーティショナモジュールまたは二分木イントラ予測／コーディングパーティショナモジュールを介して実行されてよい。
【００２３】
いくつかの例において、パーティション予測エラーデータが存在したとしても、パーティション予測エラーデータは、エンコーディングを保証するには十分でない可能性がある。パーティション予測エラーデータをエンコードすることが望ましい可能性があり、かつ、パーティション予測エラーデータがインター予測等に関連付けられているような他の複数の例においては、コーディングパーティションジェネレータモジュール１０７は、複数の予測パーティションの複数のコーディングパーティションを判断してよい。いくつかの例において、コーディングパーティションジェネレータモジュール１０７は、必要とされない可能性がある。というのは、パーティションは、コーディングパーティショニングなし（図示の通り、スイッチ１０７ａおよび１０７ｂを介して利用可能な迂回を経由して）でエンコードされ得るからである。コーディングパーティショニングがある場合もない場合も、複数の残留物または残留データがエンコーディングを必要とする場合、パーティション予測エラーデータ（いずれかの場合において、以降、複数のコーディングパーティションとして表現され得る）が適応変換モジュール１０８に送信されてよい。いくつかの例において、予測パーティション生成モジュール１０５およびコーディングパーティションジェネレータモジュール１０７を合わせて、エンコーダ１００のパーティショナサブシステムとして考えられてよい。様々な例において、コーディングパーティションジェネレータモジュール１０７は、パーティション予測エラーデータ、元のピクセルデータ、残留データ、またはウェーブレットデータにおいて動作してよい。
【００２４】
コーディングパーティションジェネレータモジュール１０７は、二分木パーティショニング技術および／またはｋ−ｄ木パーティショニング技術等を使用し、例えば、パーティション予測エラーデータの複数の潜在的コーディングパーティショニング（複数のコーディングパーティション等）を生成してよい。いくつかの例において、複数の潜在的コーディングパーティションは、適応変換モジュール１０８を介して、様々なブロックサイズで、複数の適応変換または固定変換を使用して変換されてよく、また、選択されたコーディングパーティショニングおよび選択された複数の変換（適応または固定等）は、レート歪み最適化または他の基準に基づいて判断されてよい。いくつかの例において、選択されたコーディングパーティショニングおよび／または選択された変換は、コーディングパーティションのサイズ等に基づく所定の選択方法に基づいて判断されてよい。
【００２５】
例えば、適応変換モジュール１０８は、小中ブロックサイズに対する、ローカルに最適な変換コーディングを可能にすべく、パラメトリック変換を実行するための第１の部分またはコンポーネントを含んでよい。また、適応変換モジュール１０８は、複数のパラメトリック変換を含む、様々な変換のうち、離散コサイン変換（ＤＣＴ）またはピクチャベースの変換等の固定変換を使用する、全体的に安定した、低オーバヘッドの変換コーディングを実行するための第２の部分またはコンポーネントを含んでよい。あるいは適応変換モジュール１０８は、本明細書で後述される任意の他の構成を含んでよい。いくつかの例において、ローカルに最適な変換コーディングについては、本明細書で後述されるパラメトリックハール変換（ＰＨＴ）が実行されてよい。いくつかの例において、複数の変換が、約４×４ピクセルから６４×６４ピクセルまでの矩形のサイズの複数の２Ｄブロックに対し、行われてよい。その場合、実際のサイズは、変換されたデータがルマまたはクロマであるか、インターまたはイントラであるか、あるいは用いられる判断された変換はＰＨＴまたはＤＣＴであるか、といった多くの要因により決まる。
【００２６】
図示の通り、複数の結果として得られる変換係数は、適応量子化モジュール１０９に送信されてよい。適応量子化モジュール１０９は、複数の結果として得られる変換係数を量子化してよい。さらに、パラメトリック変換に関連付けられる任意のデータが、必要に応じて、適応量子化モジュール１０９（量子化が所望される場合）または適応エントロピーエンコーダモジュール１１０のいずれかに送信されてよい。また、図１に示す通り、複数の量子化された係数がスキャンされ、適応エントロピーエンコーダモジュール１１０に送信されてよい。適応エントロピーエンコーダモジュール１１０は、複数の量子化された係数をエントロピーエンコードしてよく、それらを出力ビットストリーム１１１に含めてよい。いくつかの例において、適応変換モジュール１０８および適応量子化モジュール１０９を合わせて、エンコーダ１００の変換エンコーダサブシステムと考えられてよい。エンコードコントローラ１０３は、量子化情報セット（ｑｓ）を判断し、適応量子化モジュール１０９に提供すべく、量子化アダプタおよびレートコントロール４００または５００を有してよい。量子化アダプタおよびレートコントロール４００または５００は、後に詳述される量子化または複数の量子化パラメータ、および複数の量子化マトリックス（ＱＭ）選択肢を含んでよい。
【００２７】
また図１に示す通り、エンコーダ１００はローカルデコードループ１３５を含む。ローカルデコードループ１３５は、適応逆量子化モジュール１１２において開始されてよい。適応逆量子化モジュール１１２は、適応量子化モジュール１０９の反対の動作を実行すべく構成されてよく、その結果、逆スキャンが実行され得、複数の変換係数を判断すべく、複数の量子化された係数がデスケールされ得る。そのような適応量子化動作は、例えば非可逆であってよい。図示の通り、複数の変換係数が適応逆変換モジュール１１３に送信されてよい。適応逆変換モジュール１１３は、例えば、複数の残留物若しくは複数の残留値または複数のコーディングパーティションに関連付けられたパーティション予測エラーデータ（または前述の元のデータ若しくはウェーブレットデータ）を生成すべく、適応変換モジュール１０８によって実行されるのと同様の逆変換を実行してよい。いくつかの例において、適応逆量子化モジュール１１２および適応逆変換モジュール１１３を合わせて、エンコーダ１００の変換デコーダサブシステムと考えられてよい。
【００２８】
図示の通り、パーティション予測エラーデータ（または同様のもの）が、オプションのコーデイングパーティションアセンブラ１１４に送信されてよい。コーデイングパーティションアセンブラ１１４は、予測エラーデータの複数の予測パーティション若しくは複数のデコードされた残留予測パーティション等を生成すべく、必要に応じて、複数のデコードされた予測パーティションに複数のコーディングパーティションをアセンブルしてよい（図示の通り、いくつかの例においては、コーデイングパーティションアセンブラ１１４は、スイッチ１１４ａおよび１１４ｂを介してスキップされてよく、その場合は、複数のデコードされた予測パーティションは適応逆変換モジュール１１３において生成されたであろう）。
【００２９】
図示の通り、複数の再構成された予測パーティションを生成すべく、複数のデコードされた残留予測パーティションが、追加１１５における複数の予測されたパーティション（予測ピクセルデータ等）に追加されてよい。複数の再構成された予測パーティションは、予測パーティションアセンブラ１１６に送信されてよい。予測パーティションアセンブラ１１６は、複数の再構成されたタイルまたは複数のスーパーフラグメントを生成すべく、複数の再構成された予測パーティションをアセンブルしてよい。いくつかの例において、コーディングパーティションアセンブラモジュール１１４および予測パーティションアセンブラモジュール１１６を合わせて、エンコーダ１００のアンパーティショナサブシステムと考えられてよい。
【００３０】
複数の再構成されたタイル若しくはスーパーフラグメントは、ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７に送信されてよい。ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７は、複数の再構成されたタイル若しくはスーパーフラグメント（または複数のタイル若しくはスーパーフラグメントの複数の予測パーティション）をデブロックおよびディザリングしてよい。複数の生成されたデブロックおよびディザリングフィルタリングパラメータは、現在のフィルタ動作に使用されてよく、および／または例えば、デコーダによる使用のために出力ビットストリーム１１１においてコードされてよい。ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７の出力は、品質アナライザおよび品質復元フィルタリングモジュール１１８に送信されてよい。品質アナライザおよび品質復元フィルタリングモジュール１１８は、複数のＱＲフィルタリングパラメータを判断してよく（例えば、ＱＲ分解のため）、複数の判断されたパラメータをフィルタリングのために使用してよい。複数のＱＲフィルタリングパラメータは、デコーダによる使用のために、出力ビットストリーム１１１においてコードされてもよい。図示の通り、品質アナライザおよび品質復元フィルタリングモジュール１１８の出力は、マルチ参照フレームストレージおよびフレームセレクタ（あるいはマルチ参照コントロールまたはデコードされたピクチャバッファ若しくはストレージ）１１９に送信されてよい。いくつかの例において、品質アナライザおよび品質復元フィルタリングモジュール１１８の出力は、他の複数のフレームのコーディングにおける予測に使用され得る、最終的な再構成されたフレームであってよい（例えば、最終的な再構成されたフレームは参照フレーム等であってよい）。いくつかの例において、ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７および品質アナライザおよび品質復元フィルタリングモジュール１１８を合わせて、エンコーダ１００のフィルタリングサブシステムと考えられてよい。
【００３１】
依存関係ロジックモジュール１２８は、複数の参照フレーム、および複数のフレームの依存関係、具体的には複数のパーティションの依存関係といった複数のフレーム間の関係、をリストするためのインデックスを提供してよい。これは、マルチ参照コントロール１１９による複数のフレームに対する適切な順序付けおよび使用、並びに特定の複数のフレームが別のフレームの予測に選択される場合のためのものである。これには、マルチ参照予測、チェーン予測、複数の階層構造、および／または他の複数の予測技術等の複数のピクチャグループ構造のための依存関係ロジックの提供が含まれてよい。
【００３２】
エンコーダ１００において、複数の予測動作はインター予測および／またはイントラ予測を含んでよい。図１に示す通り、インター予測は、１または複数のモジュールによって実行されてよい。１または複数のモジュールには、モーフィングアナライザおよびモーフィングされたピクチャ生成およびバッファモジュール１２０（またはインループモーフィング生成モジュール）、合成アナライザおよび合成されたピクチャ生成およびバッファモジュール１２１（またはインループ合成生成モジュール）、複数の特性および動きフィルタリング予測モジュール１２３、モーフィングアナライザおよび生成モジュール（またはアウトオブループモーフィングアナライザモジュール）１３０、および合成アナライザおよび生成モジュール（またはアウトオブループ合成アナライザモジュール）１３２が含まれる。ここで、モーフィングおよび合成ジェネレータ１２０および１２１は、インループ（エンコーダのデコーダループの内側）として考えられ、モーフィングおよび合成アナライザ１３０および１３２は、アウトオブループ（エンコーダにおけるデコーダループの外側）として考えられる。ひとつはアナライザ、もうひとつはジェネレータと呼ばれる一方で、インループおよびアウトオブループの両方のモジュールは、複数の同一または同様のタスク（モーフィングおよび／または合成のための複数の修正されたフレームおよび複数の修正パラメータの形成）を実行してよいことに留意されたい。これらのコンポーネントを使用し、モーフィング生成モジュール１２０、またはモーフィングアナライザ１３０は、様々な形態のモーフィングを許容してよく、また現在のピクチャを分析し、複数のモーフィングパラメータを判断してよい。これら複数のモーフィングパラメータは、現在のピクチャがコードされるのに用いられる参照フレーム若しくは複数のフレームに対するものであり、かつ、動き補償された予測に先立つものであり、（１）ゲインの複数の変更、（２）ドミナント（またはグローバル）動きの複数の変更、（３）レジストレーションの複数の変更、および／または（４）ブラーの複数の変更のためのものである。
【００３３】
アウトオブループモーフィングアナライザ１３０および合成アナライザ１３２は、適応ピクチャオーガナイザ１０４からピクチャグループ構造データを受信し、エンコーダコントローラ１０３と通信して、非量子化の、デコードされていない元のフレームデータに基づき、複数のモーフィングおよび合成パラメータ（ｍｏｐ、ｓｙｐ）および複数の修正された参照フレームを形成する。アウトオブループモーフィング１３０および合成アナライザ１３２からの複数の修正された参照フレームおよび複数の修正パラメータの形成は、デコーダループ１３５から提供されるものより、はるかに高速であってよく、これはリアルタイムエンコーディングにおいて特に有利である。しかしながら、デコーダ等により別の場所で補償を実行すべく、複数の修正されたフレームおよびパラメータを使用することは、エンコーダのデコーディングループ側で、インループモーフィングジェネレータ１２０および合成ジェネレータ１２１によって行われるべきである。それにより、デコーダにおける複数のフレームの再構築の際、現在の補償が反復され得る。よって、複数の修正された参照フレームを形成すべく、かつ複数の動きベクトルを計算する動き推定１２２による動き推定のために、アウトオブループアナライザ１３０および１３２からの結果的に得られる複数の修正パラメータは、インループモーフィング１２０および合成ジェネレータ１２１によって使用される。よって、計算されたモーフィングパラメータおよび合成パラメータ（ｍｏｐとｓｙｐ）が量子化／逆量子化および使用され（例えば、合成生成モジュール１２０によって）、現在のフレームの効率的な動き（および複数の特性）補償された予測のために、複数の動きベクトルを計算する動き推定モジュール１２２によって使用され得る、複数のモーフィングされた参照フレームを生成してよい。合成生成モジュール１２１は、複数の超解像技術（ＳＲ）ピクチャ、複数の予想された補間（ＰＩ）ピクチャを含む、いくつかのタイプの合成されたフレームを使用する。中でも、動き補償された予測は、これらのフレーム内での効率的な動き補償された予測のために複数の動きベクトルを判断することによって、はるかに高いゲインをもたらし得る。モーフィングまたは合成を実行する、いくつかの例の詳細について以下記載する。
【００３４】
動き推定モジュール１２２は、現在のフレームとともに、モーフィングされた参照フレームおよび／または複数の超解像技術（ＳＲ）ピクチャおよび複数の予想された補間ピクチャ（ＰＩ）に基づき、動きベクトルデータを生成してよい。いくつかの例において、動き推定モジュール１２２はインター予測モジュールと考えられてよい。例えば、動きベクトルデータは、インター予測のために使用されてよい。インター予測が適用される場合、複数の特性および動き補償されたフィルタリング予測モジュール１２３は、前述のローカルデコードループの一部として動き補償を適用してよい。
【００３５】
イントラ予測は、イントラ方向予測アナライザおよび予測生成モジュール１２４によって実行されてよい。イントラ方向予測アナライザおよび予測生成モジュール１２４は、空間方向性予測を実行するよう構成されてよく、また複数のデコードされた隣接パーティションを使用してよい。いくつかの例において、方向の判断および予測の生成の両方がイントラ方向予測アナライザおよび予測生成モジュール１２４によって実行されてよい。いくつかの例において、イントラ方向予測アナライザおよび予測生成モジュール１２４は、イントラ予測モジュールと考えられてよい。
【００３６】
図１に示す通り、予測モードおよび参照タイプアナライザモジュール１２５は、タイルの各予測パーティション（またはスーパーフラグメント）のために、「スキップ」、「オート」、「インター」、「スプリット」、「マルチ」、および「イントラ」からの複数の予測モードの選択を許容してよい。これらすべてを、Ｐ‐ピクチャおよびＦ／Ｂ‐ピクチャに対し適用してよい。複数の予測モードに加えて、予測モードおよび参照タイプアナライザモジュール１２５は、複数のＰ‐ピクチャおよびＦ／Ｂ‐ピクチャのほかに、「インター」モードまたは「マルチ」モードによって異なり得る、複数の参照タイプの選択も許容できる。予測モードおよび参照タイプアナライザモジュール１２５の出力における予測信号は、予測アナライザおよび予測フュージョンフィルタリングモジュール１２６によって、フィルタリングされてよい。予測アナライザおよび予測フュージョンフィルタリングモジュール１２６は、フィルタリングに使用する複数のパラメータ（複数のフィルタリング係数、頻度、オーバヘッド等）を判断してよく、かつ、フィルタリングを実行してよい。いくつかの例において、予測信号のフィルタリングは、異なる複数のモード（イントラ、インター、マルチ、スプリット、スキップ、およびオート等）を示す、様々なタイプの信号をフューズしてよい。いくつかの例において、複数のイントラ予測信号は、適切なフィルタリングによってコーディング効率が大幅に強化されるように、インター予測信号のあらゆる他のタイプと異なってよい。いくつかの例において、複数のフィルタリングパラメータは、デコーダによる使用のために、出力ビットストリーム１１１においてエンコードされてもよい。フィルタリングされた予測信号は、上述のように、ディフェレンサ１０６に対し、第２の入力（予測パーティション等）を提供してよい。ディフェレンサ１０６は、前述のように、コーディングのための予測差分信号（パーティション予測エラー等）を判断してよい。さらに、同一のフィルタリングされた予測信号は、また前述のように、追加１１５に対し、第２の入力を提供してよい。前述の通り、出力ビットストリーム１１１は、ビデオ表示のために、デコーダによって使用される効率的にエンコードされたビットストリームを提供してよい。
【００３７】
動作時において、エンコーダ１００の一部のコンポーネントは、エンコーダ予測サブシステムとして動作してよい。例えば、エンコーダ１００のそのようなエンコーダ予測サブシステムは、マルチ参照フレームストレージおよびフレームセレクタ１１９、インループモーフィングアナライザおよび生成モジュール１２０、インループ合成アナライザおよび生成モジュール１２１、動き推定モジュール１２２、および／または複数の特性および動き補償された精度適応フィルタリング予測モジュール１２３、並びにアウトオブループモーフィングアナライザ１３０および合成アナライザ１３２を含んでよい。
【００３８】
一部の実装において、エンコーダ１００のそのようなエンコーダ予測サブシステムは、効率的なビデオコーディングアルゴリズム内に、多数のコンポーネントおよびこれらのコンポーネントによって生成された、複数の組み合わせられた予測を組み込んでよい。例えば、提案されるＮＧＶコーダの実装は、次の機能のうち１または複数のものを含んでよい。１．ゲイン補償（例えば、シーン内のゲイン／明度における複数の変更に対する明示の補償）。２．ブラー補償：シーン内のブラー／鮮明さにおける複数の変更に対する明示の補償。３．ドミナント／グローバな動き補償（例えば、シーン内のドミナント（主要な）動きに対する明示の補償）。４．レジストレーション補償（例えば、シーン内の複数のレジストレーション不一致に対する明示の補償）。５．超解像技術（例えば、シーン内の解像度の精度における複数の変更に対する明示のモデル）。６．予想（例えば、シーン内の動き軌道における複数の変更に対する明示のモデル）等、および／またはこれらの組み合わせ。
【００３９】
図１は、ビデオエンコーダ１００の動作に関連付けられた、複数の例示的なコントロール信号を示す。ここでは、以下の複数の略語によって、関連情報を示すことができる。
scnchg：シーンの変更情報
spcpx：空間の複雑度情報
tpcpx：時間的な複雑度情報
pdist：時間的な予測距離情報
pap：複数の事前分析パラメータ（scnchg、 spcpx、tpcpx、pdist以外のあらゆる他の事前分析パラメータのためのプレースホルダ）
ptyp：複数のピクチャタイプの情報
pgst：ピクチャグループ構造情報
pptn cand：複数の予測パーティショニング候補
cptn cand：複数のコーディングパーティショニング候補
prp：前処理
xmtyp：変換タイプ情報
xmdir：変換方向情報
xmmod：変換モード
ethp：１／８のピクセル動き予測
pptn：予測パーティショニング
cptn：コーディングパーティショニング
mot&cod cost：動きおよびコーディングコスト
qs：量子化情報セット（量子化パラメータ（Ｑｐ）、量子化マトリックス（ＱＭ）選択肢を含む）
mv：複数の動きベクトル
mop:複数のモーフィングパラメータ
syp：複数の合成パラメータ
ddi：デブロックおよびディザリング情報
qri：品質復元フィルタリングインデックス／情報
api：適応精度フィルタリングインデックス／情報
fii：フュージョンフィルタリングインデックス／情報
mod：モード情報
reftyp：参照タイプ情報
idir：イントラ予測方向
【００４０】
デコーダに送信される必要のあるpgst、ptyp、prp、pptn、cptn、modes、reftype、 ethp、xmtyp、xmdir、xmmod、idir、mv、qs、mop、syp、ddi、qri、api、fiiといった様々な信号およびデータアイテム、複数の量子化係数および他の複数のものが、適応エントロピーエンコーダ１１０によって、エントロピーエンコーディングされてよい。ここで、適応エントロピーエンコーダ１１０は、エントロピーエンコーダサブシステムとまとめて呼ばれる様々なエントロピーコーダを含んでよい。図１において、これらのコントロール信号は、エンコーダ１００に係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、他の複数の実装は、エンコーダ３００の複数の機能モジュールにわたる、複数のコントロール信号の異なる配置を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に係る複数のコントロール信号の実装は、図示された複数の特定の例示的コントロール信号のサブセットのみのタスク、複数の追加の制御信号のタスクを、および／または図示されたものとは異なる配置において含んでよい。
【００４１】
図２は、本開示の少なくとも一部の実装に従って配置された、例示的な次世代ビデオデコーダ２００の例示的な図である。図示の通り、デコーダ２００は、入力ビットストリーム２０１を受信してよい。いくつかの例において、入力ビットストリーム２０１は、エンコーダ１００を介して、および／または本明細書に記載の複数のエンコーディング技術を介してエンコードされてよい。図示の通り、入力ビットストリーム２０１は、適応エントロピーデコーダモジュール２０２によって受信されてよい。適応エントロピーデコーダモジュール２０２は、様々なタイプのエンコードされたデータ（例えば、オーバヘッド、複数の動きベクトル、複数の変換係数等）をデコードしてよい。いくつかの例において、適応エントロピーデコーダ２０２は、可変長デコーディング技術を使用してよい。いくつかの例において、適応エントロピーデコーダ２０２は、前述の適応エントロピーエンコーダモジュール１１０と逆の動作を実行してよい。
【００４２】
デコードされたデータは、適応逆量子化モジュール２０３に送信されてよい。適応逆量子化モジュール２０３は、複数の変換係数を判断すべく、複数の量子化係数を逆スキャンおよびデスケーリングするよう構成されてよい。そのような適応量子化の動作は、例えば非可逆であってよい。いくつかの例において、適応逆量子化モジュール２０３は、適応量子化モジュール１０９と反対の動作（例えば、適応逆量子化モジュール１１２とほぼ同一の複数の動作）を実行するよう構成されてよい。図示の通り、複数の変換係数（および、いくつかの例において、パラメトリック変換で使用されるための変換データ）は、適応逆変換モジュール２０４に送信されてよい。適応逆変換モジュール２０４は、複数の残留物若しくは複数の残留値または複数のコーディングパーティションに関連付けられたパーティション予測エラーデータ（または元のデータ若しくはウェーブレットデータ）を生成すべく、複数の変換係数に対し、逆変換を実行してよい。いくつかの例において、適応逆変換モジュール２０４は、適応変換モジュール１０８とは、反対の動作（適応逆変換モジュール１１３とほぼ同一の複数の動作）を実行すべく構成されてよい。いくつかの例において、適応逆変換モジュール２０４は、例えば、複数のデコードされた隣接パーティション等の以前にデコードされた他のデータに基づいて、逆変換を実行してよい。いくつかの例において、適応逆量子化モジュール２０３および適応逆変換モジュール２０４は合わせて、デコーダ２００の変換デコーダサブシステムとして考えられてよい。
【００４３】
図示の通り、複数の残留物若しくは複数の残留値またはパーティション予測エラーデータは、コーデイングパーティションアセンブラ２０５に送信されてよい。コーデイングパーティションアセンブラ２０５は、必要に応じて、複数のデコードされた予測パーティションに複数のコーディングパーティションをアセンブルしてよい（図示の通り、いくつかの例においては、コーデイングパーティションアセンブラ２０５は、スイッチ２０５ａおよび２０５ｂを介してスキップされてよく、その場合は、複数のデコードされた予測パーティションは適応逆変換モジュール２０４において生成されたであろう）。複数の再構成された予測パーティションを生成すべく、予測エラーデータの複数のデコードされた予測パーティション（例えば、複数の予測パーティション残留）が、追加２０６における複数の予測されたパーティション（予測ピクセルデータ等）に追加されてよい。複数の再構成された予測パーティションは、予測パーティションアセンブラ２０７に送信されてよい。予測パーティションアセンブラ２０７は、複数の再構成されたタイル若しくはスーパーフラグメントを生成すべく、複数の再構成された予測パーティションをアセンブルしてよい。いくつかの例において、コーディングパーティションアセンブラモジュール２０５および予測パーティションアセンブラモジュール２０７を合わせて、デコーダ２００のアンパーティショナサブシステムと考えられてよい。
【００４４】
複数の再構成されたタイル若しくはスーパーフラグメントは、デブロックフィルタリングモジュール２０８に送信されてよい。デブロックフィルタリングモジュール２０８は、複数の再構成されたタイル若しくはスーパーフラグメント（または複数のタイル若しくはスーパーフラグメントの複数の予測パーティション）をデブロックおよびディザリングしてよい。生成されたデブロックおよびディザリングフィルタリングパラメータは、例えば入力ビットストリーム２０１から判断されてよい。デブロックフィルタリングモジュール２０８の出力は、品質復元フィルタリングモジュール２０９に送信されてよい。品質復元フィルタリングモジュール２０９は、複数のＱＲパラメータに基づいて品質フィルタリングを適用してよく、複数のＱＲパラメータは、例えば入力ビットストリーム２０１から判断されてよい。いくつかの例において、デブロックフィルタリングモジュール２０８および品質復元フィルタリングモジュール２０９を合わせて、デコーダ２００のフィルタリングサブシステムとして考えられてよい。
【００４５】
図２に示す通り、品質復元フィルタリングモジュール２０９の出力は、複数の最終的なレコンフレームであってよく、マルチ参照フレームストレージおよびフレームセレクタ（デコードされたピクチャバッファとも呼ばれる）２１０内に保存されてよい。品質復元フィルタリングモジュール２０９の出力が使用され（またはモーフィングされ）、適用される、複数のデコードされたｍｏｐパラメータに従い、複数のモーフィングされたピクチャ／ローカルバッファ（モーフィングされたピクチャジェネレータおよびバッファ２１１において）を作成する。同様に、合成されたピクチャおよび複数のローカルバッファ（合成されたピクチャ生成およびバッファ２１２において）が、複数のデコードされたｓｙｐパラメータを、マルチ参照フレームストレージおよびフレームセレクタ２１０（換言すれば、ストレージまたはバッファ２１０内の複数の再構成されたフレーム）に適用することで、作成される。依存関係ロジック２２０は、マルチ参照フレームストレージ２１０内の複数の格納されたフレームのためのインデックスを保持してよく、またそのインデックス付けを実行してよい。インデックス付けは、複数のマルチ参照フレーム、チェーン予測および／または複数の階層（またはピラミッド）フレーム構造および／または後述する他の複数の技術といった、複数の予測技術に使用されてよい。モーフィングおよび合成された複数のフレームは、動き補償された予測に使用される。ここで、動き補償された予測は、複数のapiパラメータに基づく適応精度（ＡＰ）フィルタリングを使用し、デコードされたethp信号により、1／４または1／８のいずれかのピクセル予測を維持する。
【００４６】
前述の通り、複数の予測動作による補償は、インター予測補償および／またはイントラ予測補償を含んでよい。図示の通り、インター予測補償は、モーフィングされたピクチャ生成およびバッファモジュール２１１、合成されたピクチャ生成およびバッファモジュール２１２、および複数の特性および動き補償されたフィルタリング予測モジュール２１３を含む、１または複数のモジュールによって実行されてよい。モーフィング生成モジュール２１１は、複数のモーフィングされた参照フレームを生成すべく、複数の逆量子化されたモーフィングパラメータ（例えば、入力ビットストリーム２０１から判断された）を使用してよい。合成生成モジュール２１２は、入力ビットストリーム２０１から判断された複数のパラメータに基づき、複数の超解像技術（ＳＲ）ピクチャおよび複数の予想された補間（ＰＩ）ピクチャ等を生成してよい。インター予測が適用される場合、複数の特性および動き補償されたフィルタリング予測モジュール２１３は、入力ビットストリーム２０１内の受信された複数のフレームおよび動きベクトルデータ等に基づき、動き補償を適用してよい。
【００４７】
イントラ予測補償は、イントラ方向予測生成モジュール２１４によって実行されてよい。イントラ方向予測生成モジュール２１４は、空間方向性予測を実行するよう構成されてよく、また、入力ビットストリーム２０１内のイントラ予測データに従って、複数のデコードされた隣接パーティションを使用してよい。
【００４８】
図２に示す通り、予測モードセレクタモジュール２１５は、タイルの各予測パーティションに対し、「スキップ」、「オート」、「インター」、「マルチ」、および「イントラ」の中から、予測モード選択を判断してよい。「スキップ」、「オート」、「インター」、「マルチ」、および「イントラ」のすべては、入力ビットストリーム２０１内のモード選択データに基づき、複数のＰ‐ピクチャおよび複数のＦ／Ｂピクチャに適用してよい。複数の予測モードに加えて、予測モードセレクタモジュール２１５は、複数のＰ‐ピクチャおよびＦ／Ｂ‐ピクチャのほかに、「インター」モードまたは「マルチ」モードによって異なり得る、複数の参照タイプの選択も許容してよい。予測モードセレクタモジュール２１５の出力における予測信号は、予測フュージョンフィルタリングモジュール２１６によって、フィルタリングされてよい。予測フュージョンフィルタリングモジュール２１６は、入力ビットストリーム２０１を介して判断された複数のパラメータ（複数のフィルタリング係数、頻度、オーバヘッド）に基づき、フィルタリングを実行してよい。いくつかの例において、予測信号のフィルタリングは、異なる複数のモード（イントラ、インター、マルチ、スキップ、およびオート等）を示す、様々なタイプの信号をフューズしてよい。いくつかの例において、複数のイントラ予測信号は、適切なフィルタリングによってコーディング効率が大幅に強化されるように、インター予測信号のあらゆる他のタイプと異なってよい。フィルタリングされた予測信号は、上述のように、ディフェレンサ２０６に対し、第２の入力（予測パーティション等）を提供してよい。
【００４９】
前述の通り、品質復元フィルタリングモジュール２０９の出力は、最終的な再構成されたフレームに送信されてよい。複数の最終的な再構成されたフレームは、適応ピクチャリオーガナイザ２１７に送信されてよく、適応ピクチャリオーガナイザ２１７は、必要に応じて、入力ビットストリーム２０１内の複数の順序付けパラメータに基づいて、複数のフレームを再順序付けまたは再編成してよい。再順序付けされた複数のフレームは、コンテンツポストリストアラモジュール２１８に送信されてよい。コンテンツポストリストアラモジュール２１８は、デコードされたビデオに関する知覚品質のさらなる向上を実行するよう構成された、オプションのモジュールであってよい。上記向上処理は、入力ビットストリーム２０１内の複数の品質向上パラメータに応答して実行されてよく、あるいはスタンドアロン動作として実行されてよい。いくつかの例において、コンテンツポストリストアラモジュール２１８は、例えば、フィルム粒子ノイズの推定または残留ブロックノイズ低減（デブロックフィルタリングモジュール２０８について記載された複数のブロッキング動作の後でさえ）といった品質を向上させるべく、複数のパラメータを適用してよい。図示の通り、デコーダ２００は、ディスプレイデバイス（不図示）を介して表示するよう構成され得る、ディスプレイビデオ２１９を提供してよい。
【００５０】
図２は、ビデオデコーダ２００の動作に関連付けられた複数の例示的なコントロール信号を示す。そこでは、図１に関し前述したように、示された複数の略語は同様の情報を示し得る。図４において、これらのコントロール信号は、デコーダ２００に係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、他の複数の実装は、エンコーダ１００の複数の機能モジュールにわたり、複数のコントロール信号の異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に係る複数のコントロール信号の実装は、図示された複数の特定の例示的コントロール信号のサブセットのみのタスク、複数の追加の制御信号のタスクを、および／または図示されたものとは異なる配置において含んでよい。
【００５１】
図１から２は、複数の特定のエンコーディングおよびデコーディングのモジュールを示す一方で、図示されていない、様々な他のコーディングモジュールまたはコンポーネントも、本開示に従って使用されてよい。さらに、本開示は、図１および２に示される複数の特定のコンポーネントおよび／または様々なコンポーネントが配置される方法に限定されない。本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および／またはハードウェアおよび／またはこれら任意の組み合わせにおいて実装されてよい。例えば、エンコーダ１００および／またはデコーダ２００に係る様々なコンポーネントは、例えば携帯電話等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ（ＳｏＣ）のハードウェアによって少なくとも部分的に提供されてよい。
【００５２】
さらに、エンコーダ１００は、例えはビデオコンテンツサーバシステムを含むコンテンツプロバイダシステムに関連付けられ得く、および／またはそれによって提供され得ると認識されてよい。また、出力ビットストリーム１１１は、図１および２に不図示の複数のトランシーバ、複数のアンテナ、複数のネットワークシステム等の様々な通信コンポーネントおよび／またはシステムによって、例えば、デコーダ２００等の複数のデコーダに、送信または伝達され得ると認識されてよい。また、デコーダ２００は、コンピューティングデバイス（デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ、携帯電話等）等のクライアントシステムに関連付けられ得ると認識されてよい。ここで、クライアントシステムは、エンコーダ１００に対し、リモートであり、かつ、図１および２に不図示の複数のトランシーバ、複数のアンテナ、複数のネットワークシステム等の様々な通信コンポーネントおよび／またはシステムを介して、入力ビットストリーム２０１を受信する。従って、様々な実装において、エンコーダ１００およびデコーダサブシステム２００は、一緒にあるいは互いに独立して実装されてよい。
【００５３】
図３Ａは、本開示の少なくとも一部の実装に従って配置された、次世代ビデオエンコーダ３００ａの一例に係る説明図である。図３Ａは、図１に示されるものと同様のエンコーダを示し、同様の複数の要素は、簡潔さのため繰り返さない。図３Ａに示す通り、エンコーダ３００ａは、プレアナライザサブシステム３１０ａ、パーティショナサブシステム３２０ａ、予測エンコーディングサブシステム３３０ａ、変換エンコーダサブシステム３４０ａ、フィルタリングエンコーディングサブシステム３５０ａ、エントロピーエンコーダシステム３６０ａ、変換デコーダサブシステム３７０ａ、および／またはアンパーティショナサブシステム３８０ａを含んでよい。プレアナライザサブシステム３１０ａは、コンテンツプレアナライザモジュール１０２および／または適応ピクチャオーガナイザモジュール１０４を含んでよい。パーティショナサブシステム３２０ａは、予測パーティション生成モジュール１０５、および／またはコーディングパーティションジェネレータ１０７を含んでよい。予測エンコーディングサブシステム３３０ａは、動き推定モジュール１２２、複数の特性および動き補償されたフィルタリング予測モジュール１２３、および／またはイントラ方向予測アナライザおよび予測生成モジュール１２４を含んでよい。変換エンコーダサブシステム３４０ａは、適応変換モジュール１０８および／または適応量子化モジュール１０９を含んでよい。フィルタリングエンコーディングサブシステム３５０ａは、ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７、品質アナライザおよび品質復元フィルタリングモジュール１１８、動き推定モジュール１２２、複数の特性および動き補償されたフィルタリング予測モジュール１２３、および／または予測アナライザおよび予測フュージョンフィルタリングモジュール１２６を含んでよい。エントロピーコーディングサブシステム３６０ａは、適応エントロピーエンコーダモジュール１１０を含んでよい。変換デコーダサブシステム３７０ａは、適応逆量子化モジュール１１２および／または適応逆変換モジュール１１３を含んでよい。アンパーティショナサブシステム３８０ａは、コーデイングパーティションアセンブラ１１４および／または予測パーティションアセンブラ１１６を含んでよい。
【００５４】
エンコーダ３００ａのパーティショナサブシステム３２０ａは、次の２つのパーティショニングサブシステムを含んでよい。すなわち、予測のための分析およびパーティショニングを実行可能な、予測パーティション生成モジュール１０５と、コーディングのための分析およびパーティショニングを実行可能な、コーディングパーティションジェネレータモジュール１０７とである。別のパーティショニング方法は、複数のピクチャを複数の領域またはスライスにセグメント化できる、適応ピクチャオーガナイザ１０４を含んでよく、また当該別のパーティショニング方法を、このパーティショナの一部として任意で考えられてよい。
【００５５】
エンコーダ３００ａの予測エンコーダサブシステム３３０ａは、動き推定１２２および複数の特性および動き補償されたフィルタリング予測１２３、およびイントラ方向予測アナライザおよび予測生成モジュール１２４を含んでよい。動き推定１２２および複数の特性および動き補償されたフィルタリング予測１２３は、「インター」信号の分析と予測とを実行してよい。イントラ方向予測アナライザおよび予測生成モジュール１２４は、「イントラ」信号の分析と予測とを実行してよい。動き推定１２２および複数の特性および動き補償されたフィルタリング予測１２３は、複数の差分に係る、他の複数のソース（ゲイン、グローバル動き、レジストレーション等）を最初に補償し、次に実際の動き補償を行うことで、予測可能性の向上を可能にしてよい。また、動き推定１２２および複数の特性および動き補償されたフィルタリング予測１２３は、より優れた複数の予測を可能にし得る、複数の合成されたフレーム（超解像度、および予想）を作成するためのデータモデリングの使用後、次にそのような複数のフレーム内での実際の動き補償の使用を可能にしてよい。
【００５６】
エンコーダ３００ａの変換エンコーダサブシステム３４０ａは、変換のタイプおよびサイズを選択すべく、分析を実行してよく、かつ、２つの主要なタイプのコンポーネントを含んでよい。コンポーネントの第１のタイプは、小中ブロックサイズに対するローカルに最適な変換コーディングを許容すべく、パラメトリック変換の使用を許可してよい。しかしながら、そのようなコーディングは、何らかのオーバヘッドを必要とする可能性がある。コンポーネントの第２のタイプは、ＤＣＴ、または複数のパラメトリック変換を含む少数の変換の選択肢からのピクチャベースの変換等、全体的または固定的な変換を使用する、全体的に安定した、低オーバヘッドのコーディングを許可してよい。ローカルに適応される変換コーディングについては、ＰＨＴ（パラメトリックハール変換）が使用されてよい。複数の変換が、４×４ピクセルから６４×６４ピクセルまでの矩形のサイズの複数の２Ｄブロックに対し、行われてよい。その場合、実際のサイズは、変換されたデータがルマまたはクロマであるか、インターまたはイントラであるか、および用いられる変換はＰＨＴまたはＤＣＴであるか、といった多くの要因により決まり得る。結果的に得られる複数の変換係数は、量子化、スキャン、およびエントロピーコードされてよい。
【００５７】
エンコーダ３００ａのエントロピーエンコーダサブシステム３６０ａは、効率的であるが、低い複雑度の、多数のコンポーネントを含んでよい。これらコンポーネントの各々は、特定のタイプのデータ（様々なタイプのオーバヘッド、動きベクトル、変換係数）を効率的にコーディングするという目的を有する。このサブシステムの複数のコンポーネントは、複数の低複雑度可変長コーディング技術の一般クラスに属してよいが、効率的なコーディングのためには、各コンポーネントは、最大効率のためにカスタムで最適化されてよい。例えば、「コードされた／コードされていない」データのコーディングのためのカスタムソリューションが設計されてよい。「複数のモードおよび複数の参照タイプ」データのための別のカスタムソリューションが設計されてよい。「動きベクトル」データのためのさらなる別のカスタムソリューション、および「予測および複数のコーディングパーティション」データのためのさらなる別のカスタムソリューションが設計されてよい。最後に、エントロピーコードされるデータの大部分は、「変換係数」データであるので、複数のテーブル間で適応可能なアルゴリズムに加え、複数の特定ブロックサイズに対する効率的な処理のための複数のアプローチが使用されてよい。
【００５８】
エンコーダ３００ａのフィルタリングエンコーダサブシステム３５０ａは、複数のパラメータの分析並びに、これらのパラメータに基づき再構成された複数のピクチャの複数のフィルタリングを実行してよい。また、エンコーダ３００ａのフィルタリングエンコーダサブシステム３５０ａは、複数のサブシステムを含んでよい。例えば、第１のサブシステムである、ブロックノイズアナライザおよびデブロックフィルタリングモジュール１１７は、任意の複数の潜在的ブロックコーディングアーチファクトを減少またはマスクすべく、デブロックおよびディザリングを行ってよい。第２の例示的サブシステムである、品質アナライザおよび品質復元フィルタリングモジュール１１８は、任意のビデオコーディング内での量子化動作に起因する複数のアーチファクトを減少させるべく、全般的な品質復元を実行してよい。第３の例示的サブシステムは、動き推定１２２および複数の特性および動き補償されたフィルタリング予測モジュール１２３を含んでよく、第３の例示的サブシステムは、コンテンツの複数の動き特性（動き速度／ブラーの程度）に適応するフィルタを使用することで、動き補償からの複数の結果を向上させてよい。第４の例示的サブシステムである、予測フュージョンアナライザおよびフィルタ生成モジュール１２６は、予測信号の適応フィルタリング（予測における、通常イントラ予測から生じる、複数の偽のアーチファクトを減少し得る）を許容してよく、それによりコードされる必要がある予測エラーを減少させる。
【００５９】
エンコーダ３００ａのエンコードコントローラモジュール１０３は、所定の複数のリソースおよび所望されるエンコーディング速度といった複数の制約下、全体のビデオ品質を対処してよい。例えば、ショートカットを一切使用しない、フルＲＤＯ（レート歪み最適化）ベースのコーディングでは、ソフトウェアエンコーディングのエンコーディング速度は、単純に、複数のコンピューテイングリソース（プロセッサの速度、プロセッサの数、ハイパースレッディング、ＤＤＲ３メモリ等）の利用可能性の結果であってよい。そのような場合、エンコードコントローラモジュール１０３には、複数の予測パーティションおよび複数のコーディングパーティションのありとあらゆる組み合わせが、実際のエンコーディングによって、入力されてよく、各場合において、ビットレートは再構成されたエラーとともに、複数のラグランジュ最適化式に基づいて、かつ、後述の複数の実装に従い計算されてよく、複数の予測パーティションおよび複数のコーディングパーティションのベストセットが、コードされる各フレームの各タイルに対し送信されてよい。フルＲＤＯベースモードは、最善の圧縮効率をもたらしてよく、また最も遅いエンコーディングモードであってよい。コンテンツプレアナライザモジュール１０２からの複数のコンテンツ分析パラメータを使用し、これらを使って、ＲＤＯ単純化（あらゆる可能性のあるケースをテストしない）を作成し、あるいはフルＲＤＯを介して特定の割合のブロックのみを通過させることで、速度に対する品質相殺がなされ、より高速度なエンコーディングが可能になる。また、エンコードコントローラモジュール１０３は、後に詳述される量子化アダプタおよびレートコントロール４００または５００を含んでよく、量子化アダプタおよびレートコントロール４００または５００は、本明細書に開示された複数の実装を適用すべく、起動され得る。可変ビットレート（ＶＢＲ）ベースのエンコーダ動作が記載されている一方で、追加の固定ビットレート（ＣＢＲ）の制御されたコーディングが使用されてよい。
【００６０】
最後に、エンコーダ３００ａのプレアナライザサブシステム３１０ａは、ビデオコーディングの効率および速度性能の向上に役立つ、様々なタイプのパラメータを計算すべく、コンテンツ分析を実行してよい。例えば、プレアナライザサブシステム３１０ａは、水平および鉛直勾配情報（Ｒｓ，Ｃｓ）、分散、ピクチャ毎の空間複雑度、ピクチャ毎ごとの時間的な複雑度、シーンの変更検出、動き範囲推定、ゲイン検出、予測距離推定、オブジェクト数推定、領域境界検出、空間複雑度マップ計算、フォーカス推定、フィルム粒子推定等を計算してよい。プレアナライザサブシステム３１０ａによって生成される複数のパラメータは、エンコーダによって消費されるか、あるいは量子化され、デコーダ２００に通信されてよい。
【００６１】
図３Ａにおいて、サブシステム３１０ａから３８０ａまでは、エンコーダ３００ａに係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、本明細書のエンコーダ３００ａの他の複数の実装は、サブシステム３１０ａから３８０ａまでにわたるエンコーダ３００ａの複数の機能モジュールの異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に記載の例示的なサブシステム３１０ａから３８０ａの実装は、図示されたエンコーダ３００ａに係る複数の特定の例示的機能モジュールのサブセットのみのタスク、複数の追加の機能モジュールのタスクを、および／または図示されたものとは異なる配置において含んでよい。
【００６２】
図３Ｂは、本開示の少なくとも一部の実装に従って配置された、次世代ビデオデコーダ３００ｂの一例の説明図である。図３Ｂは、図２に示されるものと同様のデコーダを示し、簡潔さのため、同様の複数の要素は繰り返さない。図３Ｂに示される通り、デコーダ３００ｂは、予測デコーダサブシステム３３０ｂ、フィルタリングデコーダサブシステム３５０ｂ、エントロピーデコーダサブシステム３６０ｂ、変換デコーダサブシステム３７０ｂ、アンパーティショナ＿２サブシステム３８０ｂ、アンパーティショナ＿１サブシステム３５１ｂ、フィルタリングデコーダサブシステム３５０ｂ、および／またはポストリストアラサブシステム３９０ｂを含んでよい。予測デコーダサブシステム３３０ｂは、複数の特性および動き補償されたフィルタリング予測モジュール２１３および／またはイントラ方向予測生成モジュール２１４を含んでよい。フィルタリングデコーダサブシステム３５０ｂは、デブロックフィルタリングモジュール２０８、品質復元フィルタリングモジュール２０９、複数の特性および動き補償されたフィルタリング予測モジュール２１３、および／または予測フュージョンフィルタリングモジュール２１６を含んでよい。エントロピーデコーダサブシステム３６０ｂは、適応エントロピーデコーダモジュール２０２を含んでよい。変換デコーダサブシステム３７０ｂは、適応逆量子化モジュール２０３および／または適応逆変換モジュール２０４を含んでよい。アンパーティショナ＿２サブシステム３８０ｂは、コーデイングパーティションアセンブラ２０５を含んでよい。アンパーティショナ＿１サブシステム３５１ｂは、予測パーティションアセンブラ２０７を含んでよい。ポストリストアラサブシステム７９０は、コンテンツポストリストアラモジュール２１８および／または適応ピクチャリオーガナイザ２１７を含んでよい。
【００６３】
デコーダ３００ｂのエントロピーデコードサブシステム３６０ｂは、エンコーダ３００ａのエントロピーエンコーダサブシステム３６０ａと逆の動作を実行してよく、すなわち、エントロピーデコードサブシステム３６０ｂは、エントロピーエンコーダサブシステム３６０ａによって、大まかに可変長デコーディングと呼ばれる、複数の技術のあるクラスを使用してエンコードされる、様々なデータ（複数のタイプのオーバヘッド、動きベクトル、変換係数）をデコードしてよい。特に、デコードされる様々なタイプのデータは、「コードされた／コードされていない」データ、「複数のモードおよび複数の参照タイプ」データ、「動きベクトル」データ、「予測および複数のコーディングパーティション」データ、および「変換係数」データを含んでよい。
【００６４】
デコーダ３００ｂの変換デコーダサブシステム３７０ｂは、エンコーダ３００ａの変換エンコーダサブシステム３４０ａと逆の動作を実行してよい。変換デコーダサブシステム３７０ｂは、２つのタイプのコンポーネントを含んでよい。例示的コンポーネントの第１のタイプは、小中ブロックサイズに対するパラメトリック逆ＰＨＴ変換の使用をサポートしてよい一方で、もう１つのタイプの例示的コンポーネントは、すべてのブロックサイズに対する逆ＤＣＴ変換をサポートしてよい。ブロックに使用されるＰＨＴ変換は、複数の隣接ブロックのデコードされたデータの分析に依存してよい。出力ビットストリーム１１１および／または入力ビットストリーム２０１は、ＰＨＴ変換のためのパーティション／ブロックサイズに関する情報、並びに逆変換される２Ｄブロックのどの方向に、ＰＨＴが使用され得るかに関する情報を伝達してよい（もう一方の方向はＤＣＴを使用する）。ＤＣＴのみによってコードされた複数のブロックに対し、パーティション／ブロックサイズ情報も出力ビットストリーム１１１および／または入力ビットストリーム２０１から取得されてよく、また、適切なサイズの逆ＤＣＴを適用すべく、パーティション／ブロックサイズ情報が使用されてよい。
【００６５】
デコーダ３００ｂのアンパーティショナ３８０ｂは、エンコーダ３００ａのパーティショナサブシステム３２０ａと逆の動作を実行してよい。また、アンパーティショナ３８０ｂは、コーディングパーティションアセンブラモジュール２０５および予測パーティションアセンブラモジュール２０７という、２つのアンパーティショニングサブシステムを含んでよい。コーディングパーティションアセンブラモジュール２０５は、コードされたデータのアンパーティショニングを実行してよく、予測パーティションアセンブラモジュール２０７は、予測のアンパーティショニングを実行してよい。さらに、複数の領域セグメント化またはスライスのために、オプションの適応ピクチャオーガナイザモジュール１０４が、エンコーダ３００ａにおいて使用される場合、適応ピクチャリオーガナイザモジュール２１７がデコーダにおいて必要とされてよい。
【００６６】
デコーダ３００ｂの予測デコーダサブシステム３３０ｂは、複数の特性および動き補償されたフィルタリング予測モジュール２１３およびイントラ方向予測生成モジュール２１４を含んでよい。複数の特性および動き補償されたフィルタリング予測モジュール２１３は、「インター」信号の予測を実行してよく、イントラ方向予測生成モジュール２１４は、「イントラ」信号の予測を実行してよい。複数の特性および動き補償されたフィルタリング予測モジュール２１３は、複数の差分の他の複数のソース（ゲイン、グローバル動き、レジストレーション等）を最初に補償し、つまり、合成された複数のフレーム（超解像度および予想）を作成し、次に実際の動き補償を行うことで、予測可能性の向上を可能にしてよい。
【００６７】
デコーダ３００ｂのフィルタリングデコーダサブシステム３５０ｂは、エンコーダ３００ａによって送信された複数のパラメータに基づく、複数の再構成されたピクチャに対する複数のフィルタリングを実行してよく、フィルタリングデコーダサブシステム３５０ｂは、複数のサブシステムを含んでよい。例えば、第１のサブシステムである、デブロックフィルタリングモジュール２０８は、任意の複数の潜在的ブロックコーディングアーチファクトを減少またはマスクすべく、デブロックおよびディザリングを行ってよい。第２の例示的サブシステムである、品質復元フィルタリングモジュール２０９は、任意のビデオコーディング内での量子化動作に起因する複数のアーチファクトを減少させるべく、全般的な品質復元を実行してよい。第３の例示的サブシステムである、複数の特性および動き補償されたフィルタリング予測モジュール２１３は、コンテンツの複数の動き特性に適応可能なフィルタを使用することで、動き補償からの複数の結果を向上させてよい（動き速度／ブラーの程度）。第４の例示的サブシステムである、予測フュージョンフィルタリングモジュール２１６は、予測信号の適応フィルタリング（予測における、通常イントラ予測から生じる、複数の偽のアーチファクトを減少し得る）を許容してよく、それによりコードされる必要がある予測エラーを減少させる。
【００６８】
デコーダ３００ｂのポストリストアラサブシステム３９０ｂは、デコードされるビデオの知覚品質に関するさらなる向上を実行可能な、オプションのブロックである。当該処理は、エンコーダ１００によって送信される複数の品質向上パラメータに応答してなされ得るか、あるいは、当該処理は、ポストリストアラサブシステム３９０ｂにおいてなされる、スタンドアロンの決定であり得る。ポストリストアラサブシステム３９０ｂにおける品質を向上させるべく使用され得る、エンコーダ１００で計算される複数の特定のパラメータの見地から、エンコーダ１００において、フィルム粒子ノイズおよび残留ブロックノイズの推定が存在してよい（デブロッキングの後ですら）。フィルム粒子ノイズについては、複数のパラメータが計算されることができ、また、複数のパラメータが出力ビットストリーム１１１および／または入力ビットストリーム２０１を介して、デコーダ２００に送信され得る場合、これらのパラメータを使用して、フィルム粒子ノイズを合成化してよい。同様に、エンコーダ１００における任意の複数の残留ブロッキングアーチファクトについては、それらが測定可能であり、かつ、複数のパラメータが出力ビットストリーム１１１および／またはビットストリーム２０１を介して送信される場合、ポストリストアラサブシステム３９０ｂは、これらパラメータをデコードしてよく、また、ポストリストアラサブシステム３９０ｂは、これらパラメータを使用して、表示に先立ち、追加的なブロッキングを任意で実行してよい。また、エンコーダ１００は、シーンの変更、空間の複雑度、時間的な複雑度、動き範囲、およびポストリストアラサブシステム３９０ｂ内での品質復元に役立ち得る予測距離情報にアクセスできてよい。
【００６９】
図３Ｂにおいて、サブシステム３３０ｂから３９０ｂまでは、デコーダ３００ｂに係る複数の特定の例示的機能モジュールに関連付けられて示される一方で、本明細書のデコーダ３００ｂの他の複数の実装は、サブシステム３３０ｂから３９０ｂまでにわたるデコーダ３００ｂの複数の機能モジュールの異なる配分を含んでよい。本開示はこの点において限定されず、様々な例において、本明細書に記載の例示的なサブシステム３３０ｂから３９０ｂの実装は、図示されたデコーダ３００ｂに係る複数の特定の例示的機能モジュールのサブセットのみのタスク、複数の追加の機能モジュールのタスクを、および／または図示されたものとは異なる配置において含んでよい。
【００７０】
図４を見ると、一例の形態において、本明細書に開示された方法およびシステムを提供すべく、量子化アダプタおよびレートコントロール４００は、初期ｑｐジェネレータ４０２を含んでよい。初期ｑｐジェネレータ４０２は、フレームデータおよび後述される各フレームのための複数のピラミッドランキングを受信した後、各フレームに対し、初期の既定のＱｐを生成する。フレームの複雑度は、複雑度値ジェネレータ４０４によって判断され、Ｑｐ制限ユニット４０６は、複数のＱｐ値に対する複数の制限を判断する。シーケンス開始および静的シーンＱｐ計算ユニット４０８は、複数の静的フレームまたは開始フレームのＱｐを提供する一方で、バッファコントロール４１２は、バッファステータスまたは充填量によって、フレームＱｐを提供すべく、バッファモデル４１０を使用する。よって、バッファコントロール４１２は、特定の充填量レベル（または動作ポイント）に達したかどうかを判断するためのバッファ充填量ユニット４１４を有し、そうでない場合、フレームのＱｐを調整すべく、デルタＱｐユニット４１６が提供される。フレームのために使用されるＱｐは、次にシーケンス非開始／アクティブなシーンＱｐ計算ユニット４１８によって計算されてよい。１つの代替として、ルックアヘッドオプションを備えた１パスＣＢＲコントロールを提供すべく、バッファコントロール４１２は、ルックアヘッドキーフレームブースティングユニット４２２、ルックアヘッド時間的複雑度マスキングユニット４２４、およびルックアヘッドＱｐ係数スムージングユニット４２６を備えた、オプションのルックアヘッド時間的適応制御４２０を含んでよい。ルックアヘッドキーフレームブーストユニット４２２、ルックアヘッド時間的複雑度マスキングユニット４２４、ルックアヘッドＱｐ係数スムージングユニット４２６は、すべて以下詳細に後述される。
【００７１】
図５を参照すると、別の代替として、２パスＶＢＲレートコントロールを提供すべく、量子化アダプタおよびレートコントロール５００は、レートコントロール４００に対する追加の、あるいは代替の複数のコンポーネントを有してよい。そのようなものとしては、どの複数のフレームが複数のより複雑なフレームであるかを判断するための第１のパスアナライザ５０２、より最終的なフレームＱｐを提供するための第２のパスアナライザ５０４、およびＱｐに対するさらなる複数の調整を行うための第２のパスエラー訂正およびビットコントロール５０６がある。この構成に対し、第１のアナライザ５０２は、初期固定Ｑｐジェネレータ５０８、複雑度値ジェネレータ５１０、およびＱｐ制限ユニット５１２を有してよい。第２のパスアナライザ５０４は、キーフレームブースティングユニット５１６、時間的複雑度マスキングユニット５１８、およびＱｐ係数スムージングユニット５２０を備えた時間的適応制御５１４を有してよい。第２のパスアナライザ５０４は、ターゲット固定Ｑｐジェネレータ５２２および最終エラービットおよびターゲットビットジェネレータ５２４を有してよい。これらの要素の動作は、さらに詳細に後述される。
【００７２】
図６を見ると、例示的な処理６００を示すフロー図が、本開示の少なくとも一部の実装に従って配置されている。処理６００は、番号６０２および６０４の、１または複数の動作によって示される、１または複数の動作、機能、あるいはアクションを含んでよい。処理６００は、次世代ビデオコーディング処理の少なくとも一部を形成してよい。非限定的な例として、処理６００は、図１のエンコーダシステム１００、レートコントロール４００または５００、および／または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムによって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【００７３】
処理６００は、「入力ビデオ順序で、マルチレベル階層に関連付けられたピクセルデータの複数のフレームを取得する。マルチレベル階層は、複数の参照フレームとして使用される少なくとも複数のＩ‐ピクチャまたは複数のＰ‐ピクチャまたはそれら両方を備えるベースレベル、ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベル、および複数の参照フレームとして使用されず、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルを備える。ここにおいて、複数のＰ‐ピクチャは、順序に対する複数の過去フレームを複数の参照として使用し、最大レベル上の複数のピクチャは、過去、将来、またはそれら両方の参照を使用するオプションとともに提供される」６０２を含んでよい。Ｉ‐ピクチャは、空間的にコードされた、すなわち「複数のイントラ」ピクチャである。最大レベル上の複数のピクチャは、双方向の、すなわち複数のＢ‐ピクチャであってよい。あるいは、そのような双方向の複数のフレームは、機能的な、すなわち複数のＦ‐ピクチャであってよい。複数のＦ‐ピクチャは、複数のＢ‐ピクチャと同様であるが、複数のＦ‐ピクチャが、モーフィング技術または合成技術によって修正された、修正された複数の参照を使用できる点が異なる。そのような修正は、ゲイン補償、ブラー／レジストレーション補償、またはグローバル／ドミナント動き補償等の複数のモーフィング技術を含んでよい。複数の合成技術は、予想された補間または超解像度を含む。
【００７４】
処理６００は、「現在のフレームに対する量子化パラメータを、現在のフレームの階層レベルに少なくとも依存して判断する」６０４も含んでよい。特に、本明細書で説明される通り、初期または既定のＱｐを判断すべく、階層またはピラミッドが使用されてよい。１つの形態として、ランク（０）（ベースレベルとも言われる）Ｑｐが確立され、残りの複数のランクに対するＱｐは、上記ランク（０）Ｑｐに基づく。これは、バッファステータスまたは充填量によっては、一部のフレームに対するＱｐを調整する、１パスＣＢＲレートコントロール処理において提供されてよい。あるいは、上記Ｑｐ処理は、２パスＶＢＲ処理であってよい。２パスＶＢＲ処理では、一部のフレームに対するＱｐを最終確定すべく、フレームシーケンスの第２の完全な分析パスを実行する前に、どの複数のフレームがより複雑（またはアクティブ）であるかを判断すべく、フレームシーケンスの初期の分析を実行する。２つのパスのために十分な時間が利用可能でない場合、シーケンス全体に完全な分析を実行する前に、選ばれた数の将来のフレームに対し、初期の分析を実行する、ルックアヘッド処理を備えた、妥協の１パスＶＢＲレートコントロールが使用されてよい。以下詳述する。
【００７５】
［１パスＣＢＲレートコントロール］
詳細について図７を見ると、例示的な１パスＣＢＲレートコントロール処理７００が、本開示の少なくとも一部の実装に従って配置されている。処理７００は、７０２から７５８までの番号が一様に付けられた、１または複数の動作によって示される、１または複数の動作、機能、またはアクションを含んでよい。処理７００は、次世代ビデオコーディング処理の少なくとも一部を形成してよい。非限定的な例として、処理７００は、図１のエンコーダシステム１００、レートコントロール４００、および／または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムによって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【００７６】
処理７００は、「レートコントロール（ＲＣ）スタートアップを実行する」７０２を含んでよい。予め、当該処理、またはこの動作７０２は、固定Ｑｐコーディングが使用されるレートコントロールモード（例えば、Ｑｐを変更するためのレートコントロールなし）、１パスＣＢＲモード、２パスＶＢＲモード、または１パス（ルックアヘッド）ＣＢＲモード等の、複数のレートコントロールパラメータの初期化を含んでよい。上記複数のパラメータは、ターゲットビットレート（Ｋｂｐｓ単位）およびＫｂ単位での最大バッファサイズも含んでよい。これらのコマンドラインパラメータに基づき、異なる複数のレートコントロールパラメータ（複数のバッファ、複数の推定モデル等）が、複数の適切な値に設定される。シーケンスのビットレートおよび解像度に基づき、複数の初期の既定のＱｐが、複数のフレームの複雑度を要因とする、かつ、複数のフレームの階層またはピラミッドランクに基づき異なる、複数の所定のテーブルに基づいて、導き出されてよい。
【００７７】
図８を見ると、まず階層について、フレームまたはビデオシーケンス８００とともに説明され得る。そのようなフレームシーケンスは、８つのピクチャからなる反復パターン８０２を形成してよい。各フレームまたはピクチャは、コーディング順ではなく、表示順、より正確には入力ビデオ順に、１から１６の番号が付けられており、ピクチャタイプ（Ｉ、Ｐ、Ｆ、またはｆ）のラベルが付けられている。ここで、大文字Ｆは、Ｆピクチャが参照フレームとして使用可能なことを示し、小文字のｆピクチャは、少なくともこの図では、参照フレームとして使用されない。ピクチャタイプの表記上の上付き文字は、フレームが、どのピラミッド若しくは階層レベルまたはランクに存在するかを示し、それにより、複数の依存関係の矢印８０４でも示される、複数の参照フレームの依存関係を示す。
【００７８】
ピクチャシーケンス８００は、ランクゼロ（０）、およびランク１から３を備えた３レベルのピラミッド（ピラミッドレベルの数字にランク（０）を含まない場合）を含む。ベースまたはランクゼロ（０）のフレームは、Ｉ‐ピクチャ０（換言すれば、０回）を含んでよい。Ｉ‐ピクチャ０は、Ｐ‐ピクチャ８への参照フレームであり、Ｐ‐ピクチャ８自身はＰ‐ピクチャ１６への参照フレームであり、これらすべては、これらの上付き文字で示されるようにランクゼロである。各パターン８０２は、第１の階層レベル内に、１つの（ランク１）の参照Ｆ‐ピクチャ４または１２を、第２の階層レベル内に、２つの（ランク２）の参照Ｆ‐ピクチャ（（２および６）または（１０および１４））を、第３の階層レベル内に、４つの非参照（ランク３）のｆ‐ピクチャ（１，３，５，７または９、１１、１３、１５）を有する。この例においては、１から３の周期レベル内で、各フレームは、ランク値が１つ小さいレベルからの参照を有するが、常にこのような方法である必要はない。また、現在のフレームから、その参照フレームへの依存関係は、複数のレベルを飛び越えてよく、あるいは依存関係は、同一レベル上で追加の複数の依存関係を有してよい。本明細書に開示される方法およびシステムは、フレームがベースまたはランク（０）レベルからより遠いレベル上にあるにつれ、より高い圧縮を使用することで、イメージ品質を著しく犠牲にすることなく、最大の圧縮により近づくというコンセプトを使用する。
【００７９】
この構成を念頭に置き、かつ、より優れたレートコントロールのために、Ｑｐ変調が、ＲＣスタートアップ動作７０２内のピラミッドコーディング構造内で使用され、ＮＧＶエンコーダ等のビデオコーディングのためのエンコーディング用の既定の固定Ｑｐを形成する。
【００８０】
図９を見ると、複数のフレームの複数の階層ランクに基づき、複数の初期Ｑｐ値を導き出すためのスタートアップ処理９００が示されている。スタートアップ処理９００は、一例において、ＲＣスタートアップ動作７０２を実行すべく、ピクチャ量子化ユニットまたは初期Ｑｐジェネレータ４０２によって実行されてよい。概して、複数のランク（０）フレームにＱｐが最初に提供され、次に、他の複数のランクに、複数のランク（０）フレームに基づき、Ｑｐが提供される。よって、複数のランク（０）フレーム上の動作９０２で開始し、Ｑｐは、コマンドライン（-q N）で指定可能なものとなるよう、Ｐピクチャルマ量子化（inter_q[0]）に割り当てられる９０４。コマンドラインを介して直接指定されない場合、既定のマッピングに基づき、Ｐ‐ピクチャクロマ量子化（inter_q[1]）を導き出すべく、オフセットが追加される。よって、以下の複数の計算および複数の処理は、主にルマＱｐに関するものであり、関連する複数のクロマ値を取得すべく、本明細書において詳細に提供しないオフセットが、複数のＱｐ値に追加されてよいことが理解される。複数の同一または類似の処理が、複数のクロマ値に適用可能であり、複数のクロマ値はその後代わりに複数のルマ値に変換されることが理解される。ルマ／クロマ変換のためのオフセットについては、以降本明細書では言及されない。
【００８１】
ここで、初期の既定Ｐ‐ピクチャランク（０）Ｑｐ（inter_q[0]）の取得方法へ進む。それについては以下に詳細に後述されており、ランク（０）のＩ‐ピクチャ量子化およびＦ‐ピクチャ量子化が、擬似コードで以下に提供される、所定の複数のマッピングテーブルを使用し、inter_q[0]から導き出し９０４または判断９０６される。
【数１】
0006286718.tif 000002
式（１）
【数２】
0006286718.tif 000003
式（２）
【数３】
0006286718.tif 000004
式（３）
式中、Ｎは、以下で計算される、inter_qの既定の割り当て値である。Ｉ‐ピクチャ（intra）およびＦ‐ピクチャ（fpic）の複数のＱｐ値を取得するための、例示のＡｕｔｏＩＱおよびＡｕｔｏＦＱのマッピングテーブルが以下に示される。上限値は、対応するintra値またはfpic値より高い中間値である。
【００８２】
ＡｕｔｏＩＱ（intra  Ｑ）マッピング：
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
};
【００８３】
ＡｕｔｏＦＱ（fpic  Ｑ）マッピング：
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
};
【００８４】
intra_q[0]およびfpic_q[0]に対する複数の値が上記複数のテーブルから取得されると、前述の通り、複数のＩ‐ピクチャおよびＦ‐ピクチャに対する複数のクロマ量子化も、複数のクロマオフセットを、複数の対応するルマ量子化に追加することで導き出される。
【００８５】
１例のアプローチとして、ピラミッドコーディングについては、これらの既定のＱｐが複数のZERO_RANKフレーム（ランク（０））にのみ使用され、すなわち、ゼロランクのＰピクチャにはinter_q[0]が、ゼロランクのＩ‐ピクチャにはintra_q[0]が使用される。ランク（０）に対する複数の第１の初期の既定Ｑｐ値が設定されると、処理９００は、ピラミッドコーディングを実行してよい。ピラミッドコーディングは、最大ランクｒに到達したかどうかの判断９０８で開始する。到達していない場合、１つの可能な例として、ランクｒは、ｒ＋１に設定される（動作９１０）。より高いランク「ｒ」（ｒ≠０）の任意のフレームについては、次の式を使用（９１４）し、対応するＱｐが導き出される（９１２）。
【数４】
0006286718.tif 000005
式（４）
式中、((fpic_q[0] - inter_q[0]) + 1.0/2.0)は、デルタ係数と考えられる。よって、ランクｒ＝０の後、ランクｒは、前述の式（４）の使用のために、１に設定される。この式は、ＰおよびＦの両方のピラミッドコーディングに対し良好であり、次に、この式を用いて、同一ランク上の複数のフレームは、同一の初期または既定のＱｐ値（この場合、各ランクはＱｐ値を有する）で開始する。つまり、より高いランクの任意のフレームに対するＱｐが、固定デルタ値を、その直前（またはより低い）のランク参照フレームの初期の既定Ｑｐに追加することで、そのフレームタイプに関係なく、導き出される。これについて別の言い方をすると、デルタ係数に式（４）のｒを乗じる代わりに、現在のランクに対し、より低いランクの隣接値のＱｐに、デルタ係数を追加すると、同一の結果が取得される。最大ｒ値に到達すると、処理９００は、量子化適応コントロールに対し、複数の初期／既定のＱｐを提供９１８してよい。ランク（０）またはベースレベル上にＦ‐ピクチャが実際には存在しない場合ですら、上記式が使用されることにも留意されたい。
【００８６】
一例において、階層またはピラミッドコーディングについて、さらなる適応量子化が、複数のMAX_RANKのＦ‐ピクチャ（ピラミッド内で最大値のランク）に対しのみ実行されてよい。任意の他のランクについては、Ｑｐが前述の式（１）から（４）において導き出され、当該Ｑｐが、そのフレームタイプに関わらず使用される。一方、複数のMAX_RANKのＦ‐ピクチャについては、式（４）で導き出されたフレームＱｐは使用される前に、その分類（フラット／混在／テクスチャ）に基づく領域タイプに、さらに適応されてよい９１６。
【００８７】
図１０を見ると、式（４）を示す、例示のフレームシーケンス１０００が提供されている。フレームシーケンス１０００は、１６のフレームと、Ｆ‐ピラミッドコーディングを持つ階層Ｑｐ構造とを備える、シーケンス８００（図８）のフレームに類似するフレームシーケンスを有する。ここでは、複数のＦ‐ピクチャのみが、ランク（０）レベル以外の、複数のより高いレベルを形成する。１から１６まで順に複数のフレームを接続する複数の線は、入力ビデオ順序を示すものにすぎず、必ずしも、何らかの参照依存関係またはコーディング順序を示してはいない。ここにおいて、inter_q[0]に割り当てられた既定のＱｐは、Ｐ  Ｑｐが８（すなわち、-qp 8）の指定コマンドラインからのものであると仮定されている。これは、この例のために構成されており、複数のＱｐ値に対する何ら実際の限定を提供するものではない。一方で、inter_q[0] = 8である。他の複数の導き出されるＱｐは、intra_q[0] = 7、およびfpic_q[0] = 9であってよい。この例では、複数のＩ‐ピクチャは、ゼロランクであり、intra_qは７でコードされる。複数のＰピクチャは、ゼロランクであり、inter_qは８でコードされる。既定のinter_q[0]およびfpic_q[0]を上記式（４）に挿入すると、ランク１の複数のＦ‐ピクチャは、導き出された９．５のＱｐでコードされ、ランク２の複数のフレームは、導き出された１１のＱｐでコードされ、ランク３の複数のフレームは、導き出された１２．５のＱｐでコードされる。
【００８８】
図１１を見ると、Ｐ  Ｑｐが８（すなわち-qp 8）の指定コマンドラインに対する、Ｐピラミッドコーディングを有する、階層Ｑｐ構造が提供されている。Ｐ‐ピラミッドについては、複数のＰ‐ピクチャが、最大（MAX_RANK）レベル３を除き、ランク（０）レベルに加え、複数のレベルを占めてよい。このシナリオについては、既定のＱｐがinter_q[0]に割り当てられる。よって、一例において、inter_q[0] = 8である一方で、他の複数の導き出されるＱｐは、intra_q[0] = 7、fpic_q[0] = 9である。複数のＩ‐ピクチャはゼロランクであり、intra_qは７でコードされる。ランク０の複数のＰピクチャは、導き出される８のＱｐでコードされる。ランク１の複数のフレームは、導き出される９．５のＱｐでコードされる。ランク２の複数のフレームは、導き出される１１のＱｐでコードされる。MAX_RANKランク（３）の複数のＦ‐ピクチャは、導き出される１２．５のＱｐでコードされる。
【００８９】
複数のZERO_RANK参照フレーム間（通常、複数の隣接レベルの複数のＱｐ値間で８、１２、１６または２０で変わり得る）で、Ｑｐ変化のこのピラミッド構造を維持することで、レートコントロール内のピラミッドコーディングの複数のゲインもまた保存される。これは、複数の量子化パラメータの残りは、上述のピラミッド構造内で導き出される一方で、レートコントロールは、バッファステータスに従って、複数のZERO_RANKフレームＱｐを変調すべきであることを意味する。しかしながら、このピラミッドコーディング構造については、バッファコントロールモデルは、主に、複数のゼロランクフレームにおける複数のＱｐを制御することによって、平均ビットレートを、ターゲットビットレート近傍に維持すべきである。
【００９０】
よって、ここにおいて、ターゲットビットレートに対応する中間のZERO_RANKのＰ  Ｑｐを検索および維持すべく、レートコントロールが使用されてよい。バッファコントロールは、この中間のＰ  Ｑｐをシーンの複雑度および複数のバッファ制約に起因して複数のバッファが変動するとき変調する。また、中間のＰ  Ｑｐが修正される場合は常に、複数の異なるフレームタイプに対応するあらゆるＱｐおよび、より高いランクの複数のフレームは、最後に更新されたＰ  Ｑｐを使用して再計算されるべきである。
【００９１】
ここで、初期の既定ランク（０）のＰ‐ピクチャＱｐ（inter_q[0]）または初期のＱｐ推定（図９の動作９０２）の計算に戻る。この動作はまた、ピクチャレートコントロールの平均時間的複雑度を計算する動作７０４の一部である、あるいは動作７０４を含むと考えられてよい。この動作は、平均複雑度ジェネレータ４０４によって実行されてよい。これは、現在のフレームＱｐを決定する、各フレームのエンコーディング前のフレームレートコントロールの一部である。レートコントロールの他の複数の方法は、ターゲットビットレートに関わらず、あらゆるシーケンスに対し、あらかじめ固定された固定Ｑｐで開始する一方で、これは良好な品質のターゲットビットレートを常に実現するわけではない。より良好なまたは最善の品質を持つターゲットビットレートを実現すべく、レートコントロールは、シーケンスの複雑度、その解像度、およびターゲットビットレートに基づく、正確なＱｐで開始されてよい。よって、これまでにｐｄｉｓｔａｎｃｅモジュール内の複数のバッファ内に読み取られている、すべての将来の入力フレームに基づき、以下のように初期の既定のinter_q[0]を提供すべく、平均時空複雑度が計算および使用され得る。
【００９２】
複数の実験に基づき、シーケンス複雑度、ターゲットビットレート、およびＱｐ間の関係が導き出される。２〜３の例を挙げると、ｃｏｍｍｏｎ  ｉｎｔｅｒｍｅｄｉａｔｅ  ｆｏｒｍａｔ（ＣＩＦ）またはＹＣｂＣｒビデオコーディングフォーマットの複数のシーケンスは、Ｆ‐ピラミッドモードのレベル０から３にぞれぞれ対応する８、１６、３２、および５６の複数の固定Ｑｐでエンコードされる。すべてのＣＩＦシーケンスの平均データに基づき、これらの量の間から、次の複数の関係が導き出される。
【００９３】
図１２を見ると、このモデルに当てはまる単純な一次関係（対数領域の線形）は以下のようになる。
【数５】
0006286718.tif 000006
式（５）
式中、logQは、推定Ｑｐの対数であり、C = (avg_temporal_complexity /target_bitrate)であり、target_bitrateはbps単位、avg_temporal_complexityは(avgTSC/(width*height)^0.25) として計算される、利用可能なあらゆる将来のフレームのtemporal_complexityの平均である。式中、TSCは簡単に言うと時間的な空間複雑度または時間的な複雑度の基準を意味する。
【００９４】
複数の将来のフレームの複雑度は、ＰＤｉｓｔａｎｃｅモジュールから利用可能である。一例において、ＰＤｉｓｔａｎｃｅモジュールは、適応ピクチャ構造オーガナイザ１０４の一部であってよく、またＰＤｉｓｔａｎｃｅモジュールは、現在のフレームタイプを決定する前に、少なくとも少数のフレームを将来に先立って読み取る（Ｐｄｉｓｔａｎｃｅは、複数のＰ‐ピクチャ間のフレーム数である）。よって、時間的な複雑度の基準（ＴＳＣ）は、複数の将来のフレームに対し、複雑度基準として、計算済みである。これはあらゆるシーケンスに対し、９．６６の平均予測エラーを有する。
【００９５】
図１３を見ると、より精密な二次関係（対数領域）である。
【数６】
0006286718.tif 000007
式（６）
これは、あらゆるシーケンスに対し、１０．７６の平均予測エラーを有する。最終Ｑｐは次のように導き出される。
【数７】
0006286718.tif 000008
式（７）
【００９６】
この推定Ｑｐが、エンコーディングのための初期のＱｐとして使用される。これは、本明細書でＰｑｐまたはＰＱｐとも呼ばれるinter_q[0]のような、ZERO_RANKのＰ‐ピクチャＱｐに割り当てられる。ここから、複数の異なるフレームタイプおよび複数のより高いランクに対する、複数の既定かつ初期の、および固定のＱｐの残りが式（１）から（４）より導き出される。
【００９７】
処理７００はその後、複数のＱｐ制限値の計算７０６で継続してよい。上記複数のモデルから導き出される複数の初期のＱｐは、いくつかの一般的制限を受ける。いくつかの一般的制限は、一例として、Ｑｐ制限ユニット４０６によって判断されてよい。初期の少数のフレームについては、複数の推定モデル内にいくらかの履歴が構築されるまでは、処理７００は、シーケンス開始のための複数のＱｐ制限値の提供７０８を含んでよい。その結果、当該複数のＱｐ制限値が、異なる複数のシーケンスの観測に基づき計算される複数の所定の（Ｑｐ推定）テーブル（図１４から１８）から導き出されるようになる。より具体的には、絶対的な開始、すなわちシーケンスのまさに開始のために、複数の初期のＱｐ推定テーブルが作成されており、これらテーブルは複数の境界Ｑｐを導き出すのに用いられた複数の実験に基づいている。これらのテーブルは、複雑度、ビットレート（ｂｐｐ）およびZERO_RANKのフレームＱｐのマッピングである。これらのテーブルは、特定のターゲットビットレートを生成可能な、計算された平均複雑度を備えた、完全なシーケンスのための中間のZERO_RANKのＰ‐ピクチャＱｐの予測を試行する。Ｑｐの最大制限値および最小制限値は、以下に説明される、複数の対応する最大および最小の所定のテーブルから導き出される。
【００９８】
セットのシーケンスが既定の固定Ｑｐコーディングでエンコードされ、Ｑｐ、生成されるビットレート（ピクセル毎のビット数（ｂｐｐ）およびbpp_idとしてインデックス付けされた観点から）、および平均時空複雑度（avgTSC）間の関係が観測済みである。テーブルは、ほぼこの傾向をたどる複数の異なるシーケンスに対する、そのような複数の観測に基づいて作成された。
【００９９】
ビットレートインデックスbpp_idの計算については、指定されたビットレート、フレームレートおよびシーケンスの解像度に基づき、ピクセル毎のビット数が次のように計算され得る。
【数８】
0006286718.tif 000009
式（８）
式中、width*heightはフレームの解像度である。さらに、ビットレートインデックス（bpp_id）は、複数の正確なｂｐｐ値を、９つの可能性のある整数０から８のうちの１つに減少させるための、図１４に係る「ｂｐｐ対ｂｐｐ＿ｉｄマッピング」テーブルを使用し、導き出される。テーブルに示される複数のｂｐｐ値は、その範囲またはインデックス値の最大値である。よって、例えば、０から０．０１５２までの任意の値に対し、bpp_idは０であるといった感じである。
【０１００】
同様に、平均時空複雑度基準インデックス（cpx_id）を判断すべく、複数の連続するフレーム間の第１の動き補償残留エネルギーが使用され、時空複雑度の基準（ｃｐｘ）が判断される。この基準は、入力シーケンス内の複数の連続するフレームに対し計算され（約２０のフレームの最大ｐｄｉｓｔａｎｃｅおよび約５のフレームの最小）、平均はavgTSCとして計算される。その後、平均値（avgTSC）の複雑度インデックス（cpx_id）は、cpx_idの範囲または整数を判断するための、図１５に係る「ｃｐｘ対ｃｐｘ＿ｉｄマッピング」テーブルを使用し、導き出される。ここでは、ｃｐｘに対応するcpx_idに０から９の番号が振られている。テーブルに示される複数のavgTSC値は、そのインデック値に対する最大値であり、結果的にcpx_id = 0は０から０．７５までのavgTSCを範囲とするといった感じである。ただし、９．２５（INT_MAX）を超える値はすべて、インデックス値９に対応する。
【０１０１】
ビットレートおよび複雑度の複数のインデックス値が取得されたら、中間のＱｐは、図１６の「中間ＱＰテーブル」（あるいはMeanQp[cpx_id][bpp_id]）、図１７の「最小Ｑｐテーブル」（あるいはMinQp[cpx_id][bpp_id]）、図１８の「最大Ｑｐテーブル」（あるいはMaxQp[cpx_id][bpp_id]）から判断され得る。ここで、複数のcpx_id値は、各テーブルの側端に、複数のbpp_id値はテーブルの上端にある。
【０１０２】
ｍｉｎＱｐテーブルおよびｍａｘＱｐテーブルを使用して、以下のように複数のＱｐ境界が導かれる。
【数９】
0006286718.tif 000010
式（９）
【数１０】
0006286718.tif 000011
式（１０）
【０１０３】
レートコントロールＱｐを制限するためのこれらの制限値は、全フレームに対してではなく一部のフレームに対し、使用される。というのは、この基準は、バッファステータスを考慮しないからである。よって、これによって、実際のビットレートがターゲットビットレートから逸れる結果となり得る。
【０１０４】
あるいは、処理７００は、履歴に基づいて複数のＱＰ制限値を確立７１０することを含んでよい。平均的な複雑度に対して使用される過去の全ビット数および使用された平均Ｑｐに関するいくらか（ある程度）の履歴が確立された後、新しいフレームのためのＱｐは、現在のフレームを含む、複数の過去の統計に対する予想された複雑度およびビット数に基づいてよく、これは、現在のフレームを含む、全ビット消費量をターゲットレート近傍に設定するものである。複数のＱｐ制限値は、標準的なＰ対ＩおよびＰ対ＦのＱｐマッピングを使用する、このＱｐから導き出される。よって、複数のビットおよびＱｐモデル、および最小Ｑｐおよび最大Ｑｐは、次の式の使用から導き出されてよい。
【０１０５】
【数１１】
0006286718.tif 000012
式（１１）
式中、cplxが現在のフレームの複雑度であり、target_bitsが現在のフレームを含む全フレームに対する全ターゲットビット数である場合、avg_pqpは、これまでにエンコードされた全フレームの複数の平均Ｐｑｐであり、avg_cplxは平均時空複雑度であり、act_bitsは、これまでにエンコードされた全フレームに消費された全ビット数である。これにより、現在のフレームをエンコードするのに必要とされるＱｐがもたらされ、Ｑｐがact_bitsをtarget_bits近傍に近づけ得る結果をもたらす。概して、複数の連続するフレームに対するＱｐに、avg_pqpの約１５％のドリフトが許容される。Ｑｐにおける結果的に得られる変化がこの制限値を上回る場合は、これが複雑度における突然の変更の結果であるとき、pqpの約２５％の最大ドリフトが許容される（avg_cplxの約２５％を上回ることにより）。このＱｐは、中間Ｑｐに割り当てられる。
【０１０６】
複雑度あるいはビット消費量のいずれかに多数の変更がある場合、上記の基準は、中間と境界Ｑｐに突然の変更をもたらし得ることが観測された。これを克服するには、上記基準の使用は、Ｑｐと複雑度の偏差が、特定の複数の制限値内である場合の特別なケースに制限されてよい。換言すれば、これまでの現在のフレームの複雑度および実際のビットレートが、これまでの平均的な複雑度およびターゲットビットレートにそれぞれ比較的近い複数の状況の場合に、当該代替の履歴は、制限されてよい。
【０１０７】
第３の代替において（既定と考えられてよい）、シーケンスの残部に対し、シーケンス内でこれまでにエンコードされた複数のフレームである、平均または既定のＰ  Ｑｐを直接中間Ｑｐとして使用する７１２。よって、ここでの既定の中間Ｑｐ、あるいは履歴べースの中間Ｑｐのいずれかが上記のように確立されると、上記の擬似コード内のＡｕｔｏＩＱ  およびＡｕｔｏＦＱマッピングに基づく、標準のＰ対ＩおよびＰ対ＦのＱｐマッピングを使用する、これらのＱｐから、Ｑｐの最大制限値および最小制限値が導き出される。
【数１２】
0006286718.tif 000013
式（１２）
【数１３】
0006286718.tif 000014
式（１３）
式中、ｍｏｐは、中間動作ポイントである。よって、式（７）から導き出されるＱｐは、これらの制限値に抜き出される。
【数１４】
0006286718.tif 000015
式（１４）
Qpclipが元々これらの制限値を上回っている場合、Qpclipを最も近い制限値に設定する。
【０１０８】
処理７００は、その後、フレームＱｐの判断７１４を継続する。１形態として、この処理は、フレームが空白または静的シーンであるかどうかを判断する７１６、フレームのチェックを最初に含んでよい。これは、特定数の連続するフレームが同一ピクセルデータを有するかどうかの判断によって実行されてよい。シーンが静的または一連の空白フレームである場合、既定の固定Ｑｐが使用される。上記の通り、この処理は、一例において、静的／空白シーン計算ユニット４０８によって、Ｑｐを判断７２０すべく、平均Ｐ  Ｑｐ、フレームタイプ、およびランクの提供７１８を含んでよい。これがシーンの途中で発生した場合（例えば、短時間、シーンが静的／空白になるとき）、複数の最後の安定状態Ｑｐが、複数の空白／静的フレームとして検出されたこれまでの全フレーム（またはこの時点まで）に対し使用される。
【０１０９】
また、フレームがシーケンスの開始かどうかを、例えば、複数の既知の動き分析技術を用いた、順序番号またはシーンの変更の検出によって判断されてよい７２２。フレームがシーケンスの開始またはシーンの変更であると判断された場合、平均的な複雑度、ターゲットビットレート（ｂｐｐ）および実験に基づき作成されたＱｐモデリングが提供されてよい７２４。開始シーケンスのより最終の、あるいは最終のフレームＱｐは、一例において、シーケンス開始計算ユニット４０９によって計算されてよい。シーケンス開始計算ユニット４０９は、複数の既定の固定Ｑｐに対するものと同一の複数の計算７２６である。よって、ランク（０）のＰｑｐは、式（７）からのinter_qpであってよく、残りの複数のレベルまたはランクは、先に説明した式（４）からの自身のＱｐを受信する。このＱｐは、前のＱｐ制限セクション（式（８）から（１４））で導き出された複数の制限値に規制される。時折、開始（複数の空白フレーム等）における異常な複雑度が原因で、モデルは誤ったＱｐを予測する可能性があるので、これが実行されてよい。
【０１１０】
あるいは、後述のように、バッファステータスは複数のフレームに対するビット推定を使用し、判断されてよい。特に、複数の初期または開始シーケンスフレームに対するビット推定は、複数のあらかじめ計算されたビット推定モデルの使用を含んでよい。あらかじめ計算されたビット推定モデルは、複数の線形推定モデル（ビット推定のために、後続的に使用される）が少なくとも１つのデータポイントを介して適応されるまで、初期の少数のフレームに対する複数のターゲットビットを推定するのに使用される。Ｉ‐ピクチャコーディングについては、最初のＩ‐ピクチャが、式（１１）で導き出されるＱｐを使用し、コードされる。Ｐ‐ピクチャのビット推定については、現在のフレームがＰ‐ピクチャ（例えば、Ｆピラミッドのゼロランクのみ）である場合、Ｐの推定されるビット数は、以降の基準に基づいて導き出される。
【０１１１】
図１９を見ると、「Ｉ対Ｐビット率に対するＱｐ」というタイトルのグラフが提供されている。最初のＩ‐ピクチャがコードされた後にのみ、Ｐ‐ピクチャがコードされ得るので、Ｐ‐ピクチャのビット数は、Ｉ‐ピクチャのビット数に基づいて推定され得る。繰り返しになるが、複数の実験に基づいて、以下のＩ対Ｐピクチャビット率（ip_ratio）およびＱｐ間の複数の関係が導き出される。
一次関係：
【数１５】
0006286718.tif 000016
式（１５）
二次関係：
【数１６】
0006286718.tif 000017
式（１６）
式中、ip_ratioは上記複数の関係の１つを使用し導き出され得、PqpはＰ‐ピクチャのＱｐ値である。複数のＰ‐ピクチャの推定されるビット数は、以下の関係を使用し、導き出され得る。
【数１７】
0006286718.tif 000018
式（１７）
ここで、上記モデルはＣＩＦデータの平均に基づき、I_act_bitsは、Ｉ‐ピクチャの実際のビット数である。
【０１１２】
同様に、Ｆ‐ピクチャビット推定については、現在のフレームがＦ‐ピクチャである場合、Ｆの推定されるビット数は、将来のアンカＰ‐ピクチャから実際のビット数（コーディングが完了している場合）若しくは推定されるビット数のいずれかとして導き出される。ここで、アンカとは、入力ビデオ順序の現在のＦ‐ピクチャ後の、次のＰ‐ピクチャが参照フレームであることを意味する。以下の複数のｐビットおよびｆビット間の一次関係は、階層若しくはピラミッドにおける、ゼロ以外のフレームランクに基づいて判断される。
【数１８】
0006286718.tif 000019
式（１８）
【数１９】
0006286718.tif 000020
式（１９）
【数２０】
0006286718.tif 000021
式（２０）
式中、pf_ratioは、上記複数の関係の１つを使用し、導き出され得る。複数のＰ‐ピクチャの推定されるビット数は、以下の関係を使用し、導き出され得る。
【数２１】
0006286718.tif 000022
式（２１）
式中、Futr_anchor_bitsは、アンカＰ‐ピクチャの実際のビット数である。
【０１１３】
後に紹介および説明するように、いったん複数のビット推定が更新されると、比率方法を使用するより、シーケンスの開始近くにおけるレートコントロールに対し、複数の一次ビット推定モデルが使用されてよい。具体的に言うと、特定の複雑度および現在の中間Ｑｐに対し、特定フレーム（特定タイプ（Ｐ‐またはＦ‐）およびランク）の推定されるビット数を予想すべく、レートコントロール内で複数の単純な線形推定モデルが使用される。当該アルゴリズムの最初のセクションで言及した通り、Ｑｐは、ピラミッドコーディングを持つ階層構造内で変わる。同一ランクおよびタイプを有する複数のフレームは、距離においてより広範囲であり（図８および１０から１１内の入力ビデオ順序に沿って）、結果的に、複数の連続するフレーム（異なるランク上およびおそらく異なるタイプ）間のＱｐは、大きく変わり得る。複数の連続するフレーム間における、Ｑｐのこの急激な変化によって、今度は、複数の連続するフレーム間のビット数の広範な変化をもたらし、線形推定モデルの推定および更新を複雑化させる。
【０１１４】
よって、複数の個別の線形推定モデルが、フレームタイプおよびランクの様々な組み合わせに使用される。全部で、約５つの有効なビット推定（Ｉ０、Ｐ０、Ｆ１、Ｆ２およびＦ３の（ピクチャタイプ）（ランク）等のための）が、Ｆピラミッドコーディングに存在する。これら線形推定が少なくとも１つのデータポイントとともに更新され、複数の初期のパラメータを導き出すまで、これらの線形推定は、使用されない。
【０１１５】
各推定は、次のような３つのパラメータで構成される。（１）値。モデルパラメータ。（２）重み。複数のモデルパラメータの更新中に、現在のサンプルと比較された過去の平均に対し、重み付けが与えられる場合。（３）長さ。長さは各データポイントでインクリメントし、モデルパラメータの平均値を見つけるために使用される。
【０１１６】
ビット数の推定は、時間的な複雑度を持つ特定フレーム（特定のタイプおよびランク）に対し、実行されてよい。式内のｑｐのためのCplxは次のようになる（例えば、ビット推定）。
【数２２】
0006286718.tif 000023
式（２２）
【０１１７】
複数のビット推定の更新には、以下が含まれる。各フレームの実際のコーディング後、生成される実際のビット数が、特定のＱｐに対するビット数である場合、対応する推定の複数のモデルパラメータは、以下のように更新される。
【数２３】
0006286718.tif 000024
式（２３）
【数２４】
0006286718.tif 000025
式（２４）
【数２５】
0006286718.tif 000026
式（２５）
【数２６】
0006286718.tif 000027
式（２６）
式中、複数のモデルパラメータの複数の初期値は、複数のＩ‐ピクチャに対するＬｅｎｇｔｈ＝０、Ｖａｌｕｅ＝０、およびＷｅｉｇｈｔ＝０．２５、および他の複数のピクチャタイプに対しては０．４０を含む。Ｐｄｉｓｔａｎｃｅモジュール内で計算される「ＴＳＣ」基準はフレームのCplxの複雑度基準として使用される。本明細書におけるたくさんの式は、X += AはX = X + Aの割り当てを意味し、X *= AはX = X * Aを意味し、X -= AはX = X - A等を意味し、「++」は１ずつ等インクリメントすることを意味する、プログラミング言語で記載されていることを留意されたい。
【０１１８】
現在のフレームが開始シーケンスフレーム若しくは静的／空白フレームでない場合、処理７００は例えば、バッファコントロール４１２を参照し、バッファステータスに基づいて、フレームＱｐを提供７２８する。よって、任意の他のフレームに対し、バッファコントロールがフレームＱｐを判断する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Ｑｐが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを中間動作ポイントに近づける現在の中間Ｑｐに対し、適用され得るデルタＱｐ値が導き出される。これは以下のように導き出される。
【０１１９】
図２０を見ると、Ｐｑｐは理想的なターゲットビットレートを提供可能な、ターゲットZERO_RANKＰ‐ピクチャ量子化パラメータであるとする。現在のフレームが式（４）を使用し、かつ、そのタイプトとランクとに基づく現在のＰｑｐから導き出されたＱｐでエンコードされる場合、各フレームのエンコーディング前に、バッファコントロールは、一例において、バッファモデル４１０およびバッファ充填量ユニット４１４を使用し、バッファステータスを予想してよい。バッファオーバーフローまたはアンダーフローを回避すべく、推定されるバッファステータスに基づいて、現在のＰｑｐは、未修正または修正済みのいずれかとされる。シーンの複雑度の変化に起因するバッファの揺らぎが存在する場合はいつでも、バッファコントロールは、現在のＰｑｐをターゲットＰｑｐ近くに保つべく、現在のＰｑｐの変調を試行する。よって、バッファを中間動作ポイント（buf_mop）に保つことは、Ｐｑｐを、特定の複雑度のシーンに対する中間Ｑｐ動作ポイント近くに維持することと等しい。Ｐｑｐがバッファコントロールによって修正される場合は常に、複数の異なるフレームタイプおよびランクに対応するすべてのＱｐは、上記の式（４）を使用して更新される。
【０１２０】
これを達成するには、バッファコントロールは最初にバッファの初期化７３０を含んでよい。バッファの初期化７３０において、バッファコントロールに対応する複数の異なるパラメータが、以下のように複数の適切な値に初期化される。複数の適切な値については、バッファまたはバッファモデル２０００（図２０）上に示されており、当該ページの垂直位置は、複数の関連する充填量レベルを示す。
【数２７】
0006286718.tif 000028
式（２７）
【数２８】
0006286718.tif 000029
式（２８）
【数２９】
0006286718.tif 000030
式（２９）
【数３０】
0006286718.tif 000031
式（３０）
【数３１】
0006286718.tif 000032
式（３１）
【数３２】
0006286718.tif 000033
式（３２）
式中、buf_fulは、現在のバッファ充填量である。処理７００は、バッファの推定７３２で継続してよい。フレームシーケンスをコーディングユニットととも呼ばれる、２つのZERO_RANK参照フレーム間に位置される、複数のピクチャのサブグループ（ＳＧＯＰ）として考える。これについて別の言い方をすると、ＳＧＯＰは、将来のZERO_RANKフレームから過去のZERO_RANKフレームに後続するフレームまでの、セットまたはシーケンスのピクチャまたはフレームであってよい。複数のバッファの現在の状態について、複数のＱｐおよび複数の推定モデル、およびバッファステータスは、ＳＧＯＰの終了において予想されてよい。
【０１２１】
現在のＳＧＯＰ内での全フレームに対し、ビット数は、複数の初期（シーケンス開始／スタート）フレームに使用される、複数のビット推定方法のいずれかを使用し、推定される（fr_est_bits）。具体的には、上記の複数のビット推定が、少なくとも１つのデータポイントとともに更新され、複数の初期のパラメータを導き出すよう、履歴が存在するかどうかが判断７３４される。不十分な履歴が存在する場合、特定の複雑度およびＱｐを持つ複数のフレームビットを推定する、複数の実験から導き出されたいくつかの割合モデルを含む、ビット率７３６が使用される。これらのビット割合モデルは、式（１５）から（２１）について説明したように、Ｉ対Ｐビット率、Ｐ対Ｆビット率等を含む。
【０１２２】
十分な履歴が複数のビット推定モデルに構築されると、フレームがその複雑度に対し消費することとなるビット数を推定するためにこれらが使用され得る。特に、この場合、線形推定モデルが、例えば、コーディングの現在の状態に基づき、使用（７３８）される（式（２２）から（２６））。よって、フレームタイプおよびランクに対応する現在のＱｐがフレームに使用されてよい。Ｑｐは現在のＰｑｐから導き出される。現在のユニット内で既にコードされているそれらのフレームについては、それらの実際のビット数は既にバッファ内で更新されている。
【０１２３】
ビット予測が確立７４０されると、複数のバッファインクリメント、複数のレベル、および閾値が計算７４２され得る。現在のバッファおよび複数の推定されるバッファレベルは、現在のバッファステータスが中間動作ポイントを下回るまたは上回るかのいずれかに基づき、概算のスケール、および１形態においては正確に−１０から＋１０まで、複数のインデックスにマッピングされる。
【０１２４】
バッファインクリメントの閾値は、バッファが充填量のその現在のレベルにおいて許容可能な、フレームインスタンスの最大インクリメントである。平均バッファレベルと比較された現在のフレームインスタンスにおける、バッファインクリメントのレートは、推定可能である。現在のバッファレベルによって、所定のテーブル（図２１）がこのバッファインクリメントに対する閾値を提供する。現在のＳＧＯＰ内のコードされる全フレームに対し、これらのフレームが複数のＱｐの現在の動作セットを使用してコードされる場合、バッファインクリメントが計算される。バッファインクリメントは以下のように計算される。
【数３３】
0006286718.tif 000034
式（３３）
ＳＧＯＰ内の全フレームについて：
【数３４】
0006286718.tif 000035
（式３４）
式中、fr_est_bitsは、上記した初期フレームのビット推定の式を使用する、現在のフレームの推定されるビット数である。現在のフレームタイプおよびランクに対応するその時間的な空間複雑度およびｑｐは、式（４）を使用し、現在のＰｑｐから導き出される。
【０１２５】
現在のバッファ充填量がbuf_fulの場合、同一のＰｑｐを考慮する、予想されるバッファステータスは次のようになる。
【数３５】
0006286718.tif 000036
式（３５）
【０１２６】
複数の異なるランクに対応する固有のＱｐ構造によるピラミッドコーディングについては、複数のフレームビットは、同一パターン内においても変わる。よって、各フレームのバッファインクリメントを個別に計算する場合、推定されるバッファにおいて、さらなる広範な変化が存在することになる。それに代わるものとして、本思想は、ＳＧＯＰ全体のバッファインクリメントを計算することで、この広範な変化を無効化し、その後、推定されるバッファステータスに基づき、各フレームにおけるＰｑｐを変調することにある。よって、現在のＳＧＯＰのコーディング開始前に、バッファステータスに対するバッファインクリメントが常に考慮される。
【数３６】
0006286718.tif 000037
（式３６）
式中、last_buf_fulは、現在のＳＧＯＰ開始におけるバッファステータス（buf_ful）である。バッファステータスは、各ZERO_RANK参照フレームのインスタンスにおいて更新され、バッファステータスは、ＳＧＯＰ内の各フレームに対するこのポイントからのbuf_incrと考えらえる。
【０１２７】
バッファに対するビット予測が取得されると、および複数のバッファレベル、複数のインクリメント、および複数の閾値が確立されると、処理７００は、デルタＱｐの判断７４４で継続してよい。デルタＱｐの判断７４４は、Ｑｐの最大調整を設定すべく、一例において、デルタＱｐユニット４１６によって実行される。より詳細には、はじめに中間動作ポイントがバッファ内で選択される。例えば、式（３０）において、buf_fulは、全バッファ（buf_max）の約４０％のレベルであるbuf_mopに設定される。現在のバッファ充填量（buf_ful）がこの動作ポイント（buf_mop）からそれる場合は常に、buf_fulを動作ポイントであるbuf_mopに戻そうと試みられるが、それはゆっくり行われる。バッファの中間動作ポイント（buf_mop）は、Pqp_mopが存在するよう、Ｐｑｐの中間動作ポイントに対応すると仮定される。よって、バッファコントロールの目的の１つは、現在のＰｑｐをこの中間動作ポイントPqp_mop近くに維持することにあり、現在のＰｑｐがシーンの複雑度の変更に起因してPqp_mopからそれるときはいつでも、動作ポイントPqp_mopに到達すべく、現在のＰｑｐは少量変調されてよい。
【０１２８】
しかしながら、複数の隣接フレーム間での、より大きい量子化段階は、品質における複数の視覚的変化を引き起こすことになる。よって、Ｐｑｐは、フレーム間で、ターゲット動作ポイントが複数の小さいデルタ値で一致するよう、調整される。buf_fulが現在のバッファ充填量であり、buf_estは推定されるバッファレベルであり、buf_incrは、ＳＧＯＰの開始からのバッファ内のインクリメントである場合、デルタＱｐは次のように導き出される。
【数３７】
0006286718.tif 000038
（式３７）
式中、
【数３８】
0006286718.tif 000039
式（３８）
および式中
【数３９】
0006286718.tif 000040
式（３９）
ここにおいて、デルタＱｐの２つの係数が導き出される。１つは、バッファの現在の状態（vbv_delta、 式中vbvはビデオバッファリング検証機能を意味する）に対応し、もう一つは、現在のシーンの複雑度（cplx_delta）に対応する。これらの２つの係数は、個別に処理される。また、これらの２つの係数は、それぞれｖｂｖユニット４２０およびｃｍｐｌｘユニット４２２によって計算されてよい。というのは、デルタＱｐは、これら２つのパラメータの組み合わせに基づく、複数の異なる値を仮定してよいからである。vbv_deltaについては、バッファインクリメントが、現在のバッファレベルの閾値を超えているかどうかを特定すべく、最初に現在のバッファ７４６の状態が判断され、一例において、この閾値が上回られている場合、vbv_deltaが計算および使用される７４８。次に、式（３９）について、delta_qpfの最初の係数は、現在のバッファ充填量buf_fulに対応するvbv_deltaであり、バッファインクリメントのレートincr_rateは、次のように計算される。
【数４０】
0006286718.tif 000041
式（４０）
式中、avg_buf_fulは、buf_fulの移動平均であり、omはbuf_fulがbuf_mopを上回るまたは下回るかに依存する、動作マージンである。バッファステータスにより、バッファインクリメントの最大レートに対する閾値が計算される。当該閾値を判断すべく、閾値テーブル（図２１）が使用される。よって、incr_rateに対する閾値、brTは、閾値テーブル（図２１）で示すようになる。
【０１２９】
「ｏｍ」は次のように計算される動作マージンである。
【数４１】
0006286718.tif 000042
式（４１）
バッファ充填量レベルは、次のように計算されてよい。
【数４２】
0006286718.tif 000043
式（４２）
次に、buf_fulが境界内にあるかどうかを判断すべく、境界がチェックされてよい。
【数４３】
0006286718.tif 000044
式（４３）
【０１３０】
バッファのインクリメントレートのための閾値は、次のように計算される。
【数４４】
0006286718.tif 000045
式（４４）
【０１３１】
incr_rateが現在のバッファレベルに対するこの閾値を超える場合は常に、vbv_deltaに７４８が適用される。その場合、バッファステータスによるデルタＱｐ重み付け係数が適用される。再度現在のバッファレベルに基づいて、重み付け係数が導き出される。vbv_deltaに対し、２つの可能性のあるケースがある。
【０１３２】
第１のケースにおいて（buf_ful >= buf_mop）、ＶＢＶは過剰消費である。
【数４５】
0006286718.tif 000046
式（４５）
上記は、buf_incr > 0の場合にのみ適用される。
【０１３３】
第２のケース（buf_ful < buf_mop）において、ＶＢＶは過少消費である。
【数４６】
0006286718.tif 000047
（式４６）
上記は、buf_incr < 0の場合にのみ適用される。
【０１３４】
第２の係数は、バッファインクリメント（またはbuf_incr）に対応する複雑度デルタ（Cplx_delta）であり、現在のシーンの複雑度に起因するデルタＱｐ重み付け係数である。これは、ＶＢＶデルタに比べ、より小さな重み付けを有し、将来の複雑度を含むべく導き出される。Cplx_deltaが常に適用される。複数のバッファパラメータ（buf_ful、buf_mop、buf_incr、buf_max、およびbuf_est）を取得すべく、バッファが推定７５０されると、複雑度デルタを計算７５２するための、４つの可能性のあるケースがある。（１）(Buf_ful >= buf_mop) && (buf_incr>=0)。ＶＢＶは過剰消費であり、シーンの複雑度はより多くのビットを要求する。
【数４７】
0006286718.tif 000048
式（４７）
（２）(Buf_ful >= buf_mop) && (buf_incr<0)。ＶＢＶは過剰消費であり、シーンの複雑度はＶＢＶに複数のビットを戻し中である。
【数４８】
0006286718.tif 000049
式（４８）
（３）(Buf_ful < buf_mop) && (buf_incr<=0)。ＶＢＶは過少消費であり、フレームはＶＢＶを消耗中である。
【数４９】
0006286718.tif 000050
式（４９）
（４）(Buf_ful < buf_mop) && (buf_incr>0)。ＶＢＶは過少消費であり、フレームはＶＢＶを入力中である。
【数５０】
0006286718.tif 000051
式（５０）
【０１３５】
処理７００は、その後、デルタＱｐの計算７５４を含んでよい。１アプローチとして、現在の中間Ｑｐに比例して、上記両方の係数が組み合わされて、単一のデルタＱｐ値とされる。
【０１３６】
処理７００は次に、フレームＱｐの計算７５６を含んでよく、これは一例において、シーケンス非開始／アクティブなシーンＱｐ計算ユニット４１８によって実行されてよい。フレームＱｐは、上記のデルタＱｐを現在の中間Ｑｐに追加することで導き出される。
【０１３７】
処理７００は、Ｑｐ境界チェック７５８も含んでよい。Ｑｐ境界チェック７５８では、複数の連続するフレーム間での多すぎる偏差を回避すべく、修正されたＰｑｐは、動作７０６に関し前述した複数のＱｐ制限値を受ける。
【数５１】
0006286718.tif 000052
式（５１）
Ｑｐは、その後、フレームエンコーディングに利用可能である。
【０１３８】
その後、更新７６０が実行されてよい。Ｐ  Ｑｐがフレームにおいて修正される場合はいつでも、Ｑｐが更新されてよく、結果的に複数の異なるランクに対応する複数のＱｐが、式（４）を使用し、更新される。現在のフレームタイプおよびランクに対応するＱｐは、フレームの実際のコーディングに使用される、現在のフレームのest_qpとして割り当てられる。
【０１３９】
コーディング状態およびバッファステータスが更新されるよう、レートコントロール（ＲＣ）更新は、各フレームのエンコーディングが完了後、実行されてよい。複雑度ｃｐｌｘを有する特定のタイプおよびランクの現在のフレームが、act_qpを使用してエンコードされ、それがact_bitsを生成する場合、バッファおよび複数の推定モデルの複数のパラメータが更新される。バッファ更新については、次のようになる。
【数５２】
0006286718.tif 000053
式（５２）
【０１４０】
複数の推定モデルの更新について、現在のフレームタイプおよびランクに対応する複数のビット推定を使用する、線形推定モデルが、式（２３）から（２６）を含むシーケンス開始推定モデルと共に更新される。
【０１４１】
フィールドの終了（ＥＯＦ）チェックが実行７６２され、ＧＯＰ、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でない場合、ＴＳＣ計算７０６で開始する、処理が再実行される。ＥＯＦに達したら、複数のレートコントロールパラメータを消去する、ＲＣシャットダウン７６４が実行される。
【０１４２】
［修正されたバッファコントロール］
各フレームのためのdelta_qpを正確にコントロールすべく、バッファコントロールの代替方法が開発されている。ここで、主要な思想の１つは、バッファインクリメントを使用する代わりに、このアルゴリズムに対する他の複数の追加項目に加え、フレームＱｐを制御するための推定されるバッファステータスを直接使用することにある。この修正は、デルタＱｐの判断のためのアルゴリズムおよびその後のフレームＱｐの計算を置換または修正する。
【０１４３】
各フレーム後、バッファステータスが更新されるので、任意のフレームにおけるバッファコントロールについて、この修正は現在のＳＧＯＰ内でまだコードされていない複数のフレームに対し適用される。よって、現在のＰｑｐおよび複数の推定モデル（複数の異なるフレームタイプおよびランク）を使用し、全buf_incrが現在のＳＧＯＰ内でコードされていない全フレームに対し、推定される。はじめにバッファインクリメントを設定すべく、バッファインクリメントは次のように計算される。
【数５３】
0006286718.tif 000054
式（５３）
次にＳＧＯＰ内の全フレームに対し、
【数５４】
0006286718.tif 000055
式（５４）
式中、fr_est_bitsは、複数の初期フレームと同様の複数のビット推定を持つ、複数のビット率モデルまたは複数の線形推定モデルを使用する、現在のフレームのための推定されるビット数である。現在のフレームタイプおよびランクに対応する時間的な空間複雑度およびＱｐは、式（４）を使用し、現在のＰｑｐから導き出される。現在のバッファ充填量がbuf_fulの場合、同一Ｐｑｐで継続する、予想されるバッファステータス（buf_est）は、次のようになる。
【数５５】
0006286718.tif 000056
式（５５）
【０１４４】
式（３７）から（４０）までと同様、バッファ推定レベル（buf_estl）は、同一テーブル（図２１）からの現在のレベル（buf_estl）に対するバッファ推定（buf_est）レート閾値に基づいて判断される。  式（４２）から（４８）までと同様、vbv_deltaは次のように計算される。
【０１４５】
vbv_deltaが適用される場合、２つのケースがある。１つは、ＶＢＶが過剰消費されることになる（buf_est >= buf_mop）の場合、あるいはＶＢＶが過少消費されることになる（buf_est < buf_mop）の場合である。ＶＢＶが過剰消費される第１のケースにおいて、２つのサブカテゴリが存在する。
【０１４６】
第１のサブカテゴリ、incr_rate < (-rate_thr)では、バッファが急速にデクリメントする。
【数５６】
0006286718.tif 000057
式（５６）
あるいは、第２のサブカテゴリにおいては、バッファがオーバーフローする。
【数５７】
0006286718.tif 000058
式（５７）
【０１４７】
しかしながら、（buf_est < buf_mop）である場合の第２のケースにおいて、ＶＢＶが過少消費されるとき、ここでも同じく、２つのサブカテゴリが可能である。第１のサブカテゴリ（incr_rate > (rate_thr)）において、バッファが急速にインクリメントする。
【数５８】
0006286718.tif 000059
式（５８）
あるいは、ここで第２のサブカテゴリにおいても、バッファがオーバーフローする。
【数５９】
0006286718.tif 000060
式（５９）
次の場合を除き、これら複数の用語が上記のように定義される。最終的なフレームＱｐは式（３４）から（３６）と同様に導き出される。
【０１４８】
この修正されたバッファコントロールのための複数の主要なレートコントロールパラメータは、（１）いつvbv_deltaおよびbuf_wtを適用するかを含む。最初のパラメータについて、量子化変化は、バッファステータスおよびバッファの変化の現在のレートに基づいて、十分適切に制御されてよい。buf_estlがゼロに近い場合、あまり多くの制御は必要とされない。buf_estlが、シーンの複雑度の変化に起因し、この動作ポイントから離れるにつれ、vbv_deltaの適用される頻度をコントロールすべく、コントロールパラメータが使用されてよい。buf_estl、フレームタイプ、およびランクに基づく複数の異なる基準が使用されてよい。
【０１４９】
第２のパラメータについて、Buf_wtがdelta_qpの大きさを判断する。特に、Buf_wtが量子化適応機能をコントロールする。繰り返しになるが、buf_estlに基づき、時折、量子化は急速に増加または減少する必要があってよく、複雑度によって、他の複数の場合においては、その逆となる。このパラメータは、複数の異なるフレームに対し適用される複数のデルタＱｐの大きさを決定する。vbv_deltaについて言及したように、このパラメータはまた、buf_estl、フレームタイプおよびランクに基づく、複数の異なる基準を使用し、モデル化され得る。
【０１５０】
別のアプローチとして、このモデルは、マルチスレッディングとともに効率的に使用され得る。複数のレートコントロールバッファおよび統計の適切な更新を可能にすべく、複数の重要なセクションを使用して、レートコントロールおよび複数の更新呼び出しのみが配置される必要がある。マルチスレッディングに関し、コーディング順序およびラグはランダムであるので、性能はシングルスレッドの場合から、多少異なる可能性がある。
【０１５１】
［１パスＣＢＲアルゴリズムの概要］
このセクションは、簡単にアルゴリズムフローについて記載し、概して上記の図７を参照する。
【０１５２】
１．ＲＣ初期化：複数のＲＣパラメータを初期化する。
２．ＲＣスタートアップ：複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ（複数のバッファ、複数の推定モデル等）を複数の適切な値に設定する。ビットレートおよびシーケンスの解像度に基づいて、複数の初期のＱｐが所定のテーブルに基づいて導き出される。
３．Ｐｉｃ  ＲＣ：これは、各フレームのエンコーディング前の、現在のフレームＱｐを決定する、フレームレートコントロールである。
Ａ．平均的な複雑度：ｐｄｉｓｔａｎｃｅモジュール内でこれまでに複数のバッファ内に読み込まれたすべての将来の入力フレームに基づいて、平均時空複雑度を計算する。
Ｂ．複数の静的／空白シーンのチェック：シーンが静的または一連の空白のフレームの場合、既定の固定Ｑｐが使用される。たとえ、これがシーンの途中で発生した場合であっても（例えば短時間の間、シーンが静的／空白になるとき）、複数の最後の安定状態Ｑｐが、これまでの全フレームに対し使用され、それらは複数の空白／静的フレームとして検出される。
Ｃ．フレームの複数のＱｐ制限：
ｉ．シーケンスの開始：それがシーケンスの絶対的開始である場合、複数の実験に基づいて作成された初期のＱｐ推定テーブルが使用され、複数の境界Ｑｐを導き出す。このテーブルは、複雑度、ビットレート（ｂｐｐ）およびZERO_RANKのフレームＱｐのマッピングであり、特定のターゲットビットレートを生成可能な計算された平均複雑度を有する、完全なシーケンスのための中間のZERO_RANKのＰ‐ピクチャＱｐの予測を試行する。対応する複数の所定のテーブルから複数のＱｐ制限値も導き出される。
ｉｉ．何らかの初期の履歴の構築後：平均的な複雑度に対し消費された過去の全ビット数および使用された平均Ｑｐに係るいくらかの履歴を有するゆえ、過去の統計に対する現在のフレームを含む、予想される複雑度および複数のビットに基づき、新しいフレームに対するＱｐの予測を試行する。過去の統計に対する現在のフレームは、現在のフレームを含む全ビット消費量をターゲットレートに近付け得るものである。複数のＱｐ制限値が、標準のＰ対ＩおよびＰ対ＦのＱｐマッピングを使用するこのＱｐから導き出される。
ｉｉｉ．既定：上記（ｉｉ）のケースは、現在のフレームの複雑度およびこれまでの実際のビットレートがこれまでの平均的な複雑度およびターゲットビットレートにそれぞれ近い場合にのみ使用される。他の任意のケースにおいては、既定のＱｐがこれまでの平均Ｑｐとなり、複数のＱｐ制限値は、標準のＰ対ＩおよびＰ対ＦのＱｐマッピングを使用するこのＱｐから導き出される。
Ｄ．フレームＱｐ：
ｉ．シーケンスの開始またはシーンの変更：フレームＱｐは、平均的な複雑度、ターゲットビットレート（ｂｐｐ）および多くの実験に基づいて作成されたＱｐモデリングに基づいて、導き出される。このＱｐは、前のセクションＣで導き出された複数の制限値に規制される。時折、モデルは開始（複数の空白のフレーム等）の異常な複雑度に起因して、複数の誤ったＱｐを予測する可能性があるので、これは必要である。
ｉｉ．バッファコントロール：任意の他のフレームについて、バッファコントロールはフレームＱｐを決定する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Ｑｐが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを動作ポイントに近づける現在の中間Ｑｐに対し、適用される必要のあるデルタＱｐ値を導き出したいと考える。これは以下のような一連の段階において導き出される。
ａ．バッファ推定およびバッファインクリメント：複数のバッファの現在の状態について、複数のＱｐおよび複数の推定モデルは、現在のＳＧＯＰの終了において、バッファステータスを予想する。ＳＧＯＰは、将来のZERO_RANKフレームから、過去のZERO_RANKフレームに後続するフレームまでの一連の複数のピクチャである。また、現在のＳＧＯＰ内のコードされる全フレームに対し、これらのフレームが複数のＱｐの現在の動作セットを使用してコードされる場合、バッファインクリメントを計算する。
ｉ．利用可能な履歴：十分な履歴が複数のビット推定モデルに構築されると、フレームがその複雑度に対し消費することとなるビット数を推定するためにこれらが使用され得る。フレームタイプおよびランクに対応する現在のＱｐがフレームで使用される。
ｉｉ．履歴なし：あるいは、複数の実験から導き出されたいくつかの割合モデルが使用され、特定の複雑度およびＱｐを持つ複数のフレームビットを推定する。これらのビット割合モデルは、Ｉ対Ｐビット率、Ｐ対Ｆビット率等である。
ｂ．複数のバッファレベルインデックス：現在のバッファステータスが中間動作ポイントを下回るまたは上回るかどうかに基づいて、現在のバッファおよび複数の推定されるバッファレベルが、−１０から＋１０までのスケールの複数のインデックスにマッピングされる。
ｃ．バッファインクリメントレートおよびその閾値：平均バッファレベルに対する現在のフレームインスタンスにおけるバッファインクリメントレートを推定する。現在のバッファレベルにより、所定のテーブルは、このバッファインクリメントに対する閾値を付与する。このことは、当該テーブルが、バッファが充填量のその現在のレベルにおいて許容可能な、フレームインスタンスの最大インクリメントを付与することを意味する。
ｄ．デルタＱｐ計算：デルタＱｐの２つの係数が導き出される。１つは、バッファの現在の状態に対応し、もう１つは現在のシーンの複雑度に対応する。デルタＱｐは、これら２つのパラメータの組み合わせに基づいて、複数の異なる値を仮定し得るゆえ、これら２つを別個に処理する必要がある。
ｉ．ＶＢＶデルタ：インクリメント／デクリメントのレートが、現在のバッファレベルの許容閾値を超える場合はいつでも、バッファステータスによるデルタＱｐ重み付け係数が適用される。現在のバッファレベルに基づいて、重み付け係数が再度導き出される。
ｉｉ．複雑度デルタ：現在のシーンの複雑度による、デルタＱｐ重み付け係数である。これは、ＶＢＶデルタと比べ、より小さな重み付けを有する。これは、将来の複雑度を含むべく、導き出される。
ｉｉｉ．デルタＱｐ：現在の中間Ｑｐに比例して、上記両方の係数が組み合わされて、単一のデルタＱｐ値とされる。
ｅ．フレームＱｐ計算：上記のデルタＱｐを現在の中間Ｑｐに追加し、かつセクション（ｃ）で導き出される複数の境界Ｑｐに制限することで、フレームＱｐが導き出される。
４．Ｐｉｃ  ＲＣの更新：これは、現在のフレームの複雑度、Ｑｐおよびビット数に基づいて、各フレームエンコードの終了において、バッファステータスおよび複数の推定モデルを更新する。
５．ＲＣシャットダウン：複数のレートコントロールパラメータを消去する。
【０１５３】
［２パスＶＢＲレートコントロール］
図２２Ａから２２Ｂを見ると、２パスの可変ビットレート（ＶＢＲ）アルゴリズムまたは処理２２００が示されており、本開示の少なくとも一部の実装に従って配置されている。処理２２００は、２２０２から２２４８までの番号が一様に付けられた、１または複数の動作によって示される、１または複数の動作、機能、またはアクションを含んでよい。処理２２００は、ＮＧＶコーデックに追加され得る２パスレートコントロールモードを形成してよい。非限定的な例として、処理２２００は、図１のエンコーダシステム１００、レートコントロール５００、および／または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムの追加の部分によって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。
【０１５４】
この処理を実装すべく、第１の分析パスは一例において、コマンドラインパラメータ-bm 3で、有効化されてよい一方で、レートコントロールを備える第２のパスは、コマンドラインパラメータ-bm 2で有効化されてよい。ＲＣスタートアップ処理は、スタートアップ処理７０２と同様、２２０２によって実行されてよい。
【０１５５】
ここで詳細については、２パスＶＢＲ処理は、可変ビットレートを備える大きなバッファとして動作する、固定ビットレートに使用される固定のチャネルバッファを許容する。これは、２つのパスを伴い、コードされる完全若しくは全体、あるいはほぼ全体のフレームシーケンスに対し、できる限り高速に、完全な第１のパス分析２２０４を実行することで達成される。次に、第２のパス分析が完全なフレームシーケンスに対し、実行される。第１のパス内で、完全なシーケンスが既定の固定量子化（ＣＱ）モードでエンコードされる。特に、第１の分析パスは、動作２２０６で判断される、平均的な複雑度、ターゲットビットレート（ｂｐｐ）およびＱｐモデリングに基づいて、内部Ｑｐを判断することを含む。換言すると、１形態において、第１のパスの初期のＱｐは、複数の所定のテーブル（図１２および１３）および上記の対数の式（７）を使用して、初期の既定のＱｐinter-q[0]を取得する１パスＣＢＲ処理と同様に導き出される。これは、上記の通り、複数のＱｐ制限値を判断することを含んでよい。フレームシーケンスのための階層構造内の複数のランクの各々に対する複数の既定のＱｐは、上記の式（４）によって計算され得、ランクごとのこれらの定数値は、第１のパス分析のための結果的に得られる複数のＱｐと考えられる。
【０１５６】
第１のパスの時間を減少させることが重要であるので、第１のパス分析は、分析のためのビデオまたは複数のフレームのサイズを減少すること、および一形態において、第１のパスの時間を減少すべく、複数のフレームを均一に減少することを含んでよい。これは、フレームまたはビデオサイズを、フレームの完全なサイズの１／４等、完全なサイズに対する割合に減少させることで達成されてよい。この場合、分析されるフレームのビット数は、例えば、４ピクセルの各２×２グループの１ピクセルのみが分析されるよう、サンプリングサイズを減少することで減少されてよい。その後、複数の結果が、第２のパスの完全なサイズのフレーム（あるいは後述のようにスケールされたフレーム）に適用されてよい。
【０１５７】
固定フレームＱｐ、複数のビットレート、複雑度等の複数のフレームレベル統計、すなわちメタデータが、ｓｔａｔ（メタデータ）ファイルに書き込まれる２２０８。このＱｐおよびメタデータについて、システムは次に、前もって、どの複数のフレームがビジー（静的に対する動的）であり、どの複数のフレームが複雑または問題があるかを認識する。一形態において、レートコントローラ５００は、これらの対応する第１のパス分析計算を実行すべく、コンポーネント５０８、５１０および５１２を備える第１のアナライザ５０２を有してよい。よって、一形態において、第１のパス分析は、複数の初期の既定のＱｐを用いてエンコーディングを実行してよく、それで十分である。別のいくつかの形態においては、どの複数のフレームが、シーケンス内の他の複数のフレームより、より複雑である（またはより多くのビットを使用する）かを判断すべく、複雑度およびフレーム毎のビット数（または換言すると、ｂｐｐおよび／またはビットレート）の判断だけで十分である。よって、第１のパス分析について、複数の良好な品質のイメージのための完全なエンコーディングは不要であり、良好なまたは高品質のエンコーディングはスキップされてよい。
【０１５８】
第２のパス分析２２１０は、一例において、エンコーディングに使用される複数のフレームＱｐを形成するための第２のパスアナライザ５０４によって実行されてよい。はじめに、第１の分析パス内のｓｔａｔファイル内に書き込まれた、複数の異なるフレームレベルのｓｔａｔが、複数のフレームバッファ内に読み取られる２２１２。第２のパス分析の複数の計算を開始する前に、全体のビットレートをターゲットに収束させる、各フレームのビットターゲットを導き出すべく、シーケンス内の全フレームに対し、レートコントロール分析が実行される。第１のパスｓｔａｔに基づいて、ターゲットビットレートに導く、第２のパスの固定Ｑｐを判断すべく、当該アルゴリズムが使用されてよい。キーフレームブースティングおよび（時間的）複雑度マスキングから導き出される、複数のデルタＱｐ係数を使用し、適応量子化が複数のフレームＱｐにわたり適用される。
【０１５９】
第２のパスのコーディング効率を向上すべく、各フレームのビット数がスケールアップまたはダウン２２１３され、フレーム毎のビット数のターゲット数と同一の全ビット数を生成する。これにより、さらなる所要時間の必要性およびエンコーディング中の複数の複雑な変換計算を回避する。スケール係数は、ターゲットビットレートおよび第１のパス分析で生成されたビットレートに基づいて導き出される。このスケール係数は、各フレームに均一に適用され、フレームのビットターゲットを導き出す。相対的なビット配布は、変更されないが、全体的なビット配布は、この段階によって、スケールダウン／アップされる。
【数６０】
0006286718.tif 000061
式（６０）
式中、total_ns_bitsは、各フレームの非スケーラブルビット総数（複数のヘッダ等）であり、target_total_bitsは、スケーラブルおよび非スケーラブルのビット数を含むフレームのためのターゲットビット数であり、1pass_total_bitsは、第１のパス分析内で導き出されるフレームの現在の実ビット合計数である。シーケンス内の各フレームに対し、以下を使用し、スケールされたフレームサイズが導き出される。
【数６１】
0006286718.tif 000062
（式６１）
式中、nsbitsは非スケーラブルなビット数であり、frmbitsはフレームのスケーラブルな（イメージ）ビット数である。
【０１６０】
第２のパス内のエンコーディング品質を向上するために各フレームのビットターゲットを修正すべく、適応量子化２２１４を実行するための時間的適応制御５１４が使用されてよい。時間的適応制御５１４は、後述のキーフレームブースティングを実行するユニット５１６、時間的複雑度マスキングを実行するユニット５１８、およびＱｐ係数スムージングを実行するユニット５２０を含んでよい。
【０１６１】
低い複雑度の複数のフレームの量子化を変更することなく、低い複雑度を持つ複数の静的シーンおよび／または複数のシーンの品質を上げるべく、キーフレームブースティング２２１６が実行されてよい。これは、通常より低いＱｐを備える、複数の特定のキー（主要な）となるＩ‐ピクチャを提供することで達成される（それにより、Ｉ‐ピクチャのより詳細かつより高品質を保持する）。複数の低い複雑度のシーンにおいて、システムが複数の追加ビットを費やすことで、複数のＩ‐ピクチャの品質を保持する場合、これによって、他の複数のフレームは粗く量子化されるにもかかわらず、当該他の複数のフレームの品質を向上させつつ、他の複数のフレームのビット数を節約することになることがわかった。これは、複数のスキップブロックの高度な選択によるもので、複数のフレームの残余にわたり、複数のＩ‐ピクチャの品質を直接伝達する。
【０１６２】
ブースティングするためのシーンの選択については、シーンの複雑度はビット割合に基づいて検出され、Ｑｐ重み付け係数は各ＧＯＰ内のＩ‐ピクチャのために導き出される。
【０１６３】
複数の低い複雑度のシーンでのキーフレームブースティングのために付与される追加の複数のビットを含めた後、各フレームのビットターゲットは、次のように再計算される。Ｉ‐ピクチャｋの後の各フレームｊについて、fs[j].bits < (fs[k].bits/2)の場合。
【数６２】
0006286718.tif 000063
（式６２）
fs[j].bits < (fs[k].bits/3)の場合、
【数６３】
0006286718.tif 000064
式（６３）
式中、fs[j].bits およびfs[k].bitsは、そのフレームのビット数でのフレームサイズを意味し、key_scale_factorは１．０に初期化される。キーフレームの追加ビット数は、次の式を使用し、導き出される。
【数６４】
0006286718.tif 000065
式（６４）
各フレームのためのscaled_bitsは、これらの追加のキーフレームビットを構成すべく、再計算される。
【数６５】
0006286718.tif 000066
式（６５）
式中、scaled_total_bitsは、フレームシーケンスのスケーラブルなビット合計数である。各フレームに対し再び、scaled_sizeが再計算される。
【数６６】
0006286718.tif 000067
式（６６）
【０１６４】
時間的複雑度マスキング２２１８は、ビットシャフリングを使用し、複数の高い複雑度のシーンからの複数のビットを、複数の低い複雑度のシーンにシフトすべく、ビットシャッフリングを使用する。複数の心理視覚的マスキングコンセプトに従って、複数の高い複雑度領域に対し、複数の低い複雑度領域で使用されるビットごとに、より高い品質が得られる。よって、複数の高い複雑度領域から複数の低い複雑度領域へと複数のビットをシャッフリングすることで、エンコーディングの全体的な品質が向上する。これは、一例において、すべての残りの非キーブーストされたフレームに対する複数の時間的な重み付け係数を伴ってよい。それは、平均（相対的タイプおよびランク）に対するビット数の複数の相対的割合を使用し、導き出されてよい。
【０１６５】
より具体的には、フレームシーケンスまたはシーン内の各フレームタイプおよびランクの組み合わせ（複数の０＋３レベルを持つＦ‐ピクチャピラミッドのためのＩ０、Ｐ０、Ｆ１、Ｆ２、Ｆ３、並びに複数のＩ、Ｐ、およびＦピクチャ等）について、複数の個別の平均サイズおよび全ビット数に対するビット数の複数の相対的割合が計算される。特定のタイプおよびランクのシーケンス内の各フレームについては、scaled_size < scaled_avgの場合、
【数６７】
0006286718.tif 000068
式（６７）
scaled_size > scaled_avgの場合、
【数６８】
0006286718.tif 000069
式（６８）
式中、scaled_sizeは、フレームのビットサイズであり、scaled_avgは、分析されているフレームのシーケンス内の各タイプ‐ランクのための平均サイズであり、はじめにscale_factor_spend = 0.1で、はじめにscale_factor save = 0.2である。これにより効率的に、はじめにフレームの実際のサイズおよび平均化されたサイズ間の差分の約１０または２０％が取られ、その差分をフレームサイズに追加する。
【０１６６】
複数のビットのシャッフリング後、複数のフレームターゲットサイズが上記のターゲットにもう一度リスケールされる。
【数６９】
0006286718.tif 000070
式（６９）
再び、各フレームについて、scaled_sizeが再計算される。
【数７０】
0006286718.tif 000071
式（７０）
【０１６７】
一例のアプローチとして、このターゲットサイズ（target_size）が、第２のパスエンコーディング内の各フレームのターゲットフレームサイズとして設定される。
【０１６８】
フレーム品質を向上させるための第３の技術としてのＱｐ係数スムージングが、以下説明される。２パスＶＢＲレートコントロール処理の修正版である。
【０１６９】
あるいは、処理はその後、各フレームのフレームＱｐを推定してよい。各フレームについて、レートコントロールは、次を使用し、各フレームのエンコーディング開始時にフレームＱｐを判断する。
【数７１】
0006286718.tif 000072
式（７１）
式中、epfは、フレーム毎のエラーであり、一例において、epfは全ビットエラーの３％である（各フレームのエンコーディング後の更新されたtotal_act_bitsとtotal_scaled_sizeとの間の差分である）。epcは現在のフレーム毎のエラーで、この場合、全フレームタイプおよびランクの全ビット数に対する現在のフレームタイプおよびランクの重み付けである。
【０１７０】
この新しいtgt_sizeビット数に対応する新しいフレームのｑｐは、次の関係を使用し、１パスｓｔａｔと比較して導き出される。
【数７２】
0006286718.tif 000073
式（７２）
式中、est_qpは、フレームの推定されるＱｐで、現在のフレームをエンコードするのに使用される。式中、1pass_bitsおよびand 1pass_qpは、第１のパス分析からの各フレームのためのビット数およびＱｐである。各フレームのエンコーディング後、全ビットエラーが更新され、次の複数のフレームＱｐ計算において使用される。
【数７３】
0006286718.tif 000074
式（７３）
【０１７１】
別の代替として、修正された第２のパスまたはレートコントロールパスが使用されてよい。上記セクションで言及した第２のパスアルゴリズム分析（第１のパス分析に対し）は、ターゲットビットレートからのより広範な偏差および、複数の複雑なシーケンスのための固定Ｑｐエンコーディングに対し、複数のピーク信号対雑音比（ＰＳＮＲ）の損失をもたらす可能性がある。より具体的には、前のアルゴリズムでは、キーフレームブースティングおよび（時間的）複雑度マスキング（ビットシャフリングを使用して）後、各フレームの第１のパスのビット数が、ターゲットにスケールされる。よって、フレームＱｐはこれらのスケールされた複数のフレームサイズから推定される。階層的予測構造を配備することで、これは第２のパス内の複数のＱｐの広範な変化、および複数のＱｐ内の階層構造の損失につながっていた。よって、２パスのアルゴリズムの第２のパスは、次のように修正され、さらにずっと優れた性能を実現する。修正されたアルゴリズムは、第１のパスｓｔａｔに基づくターゲットビットレートに導く、固定Ｑｐを第２のパスに対し判断する。キーフレームブースティングおよび（時間的）複雑度マスキングは、選択された固定Ｑｐにわたり、適応量子化を使用して組み込まれる。キーフレームブースティングおよびフレーム複雑度の変化は、フレームＱｐに適用可能なデルタＱｐ係数（qp_deltaf）にマッピングされる。修正されたアルゴリズムは、スケーリング２２１３を省略し、これについては次のセクションで詳細に説明される。
【０１７２】
複数の低い複雑度または静的シーンのキーフレームブースティング２２１６について、この修正された代替においては、key_scale_factorが前のセクション（式（６２）から（６３））と同一または類似の方法で導き出される。シーンが低い複雑度のシーンまたはシーケンスであるかどうかの判断は依然、シーケンス内の複雑度の割合を分析することによって実行されてよいが、ここにおいて、これは、複数のルックアヘッドフレームの各々に対し判断される複数の複雑度を含む。しかしながら、ここで、key_scale_factorは次のようにデルタＱｐ係数にマッピングされてよい。
【数７４】
0006286718.tif 000075
式（７４）
【０１７３】
適応量子化を使用するこの修正された代替における、時間的複雑度マスキング２２１８については、各フレームタイプおよびランクの組み合わせのために、複数の平均サイズの各々および全ビット数に対するビット数の相対的割合が計算される。特定のタイプ（ｔ）とランク（ｒ）のシーケンス内の各フレーム（ｉ）について、fs[i].bits < scaled_avgの場合、
【数７５】
0006286718.tif 000076
式（７５）
fs[i].bits > scaled_avgの場合、
【数７６】
0006286718.tif 000077
式（７６）
式中、fs[i].bitsは、フレームスケーラブルなビット数、およびscaled_avgは、フレームシーケンス内の複数の特定タイプおよびランクのフレームにわたる平均的なスケーラブルなビット数である。ここで、複数の時間的な複雑度が、複数のＱｐデルタ係数にマッピングされ、それは、フレーム対平均ビット数の割合を、フレームランクに応答できる能力において提供する。よって、Ｑｐデルタ係数は、フレームＱｐのスケーリング係数として使用可能である。
【０１７４】
Ｑｐ係数スムージング２２２０については、同一タイプおよびランクの複数の連続するフレームに対する複数のＱｐ係数は、複数の連続するフレーム（同一タイプおよびランクの）間のＱｐの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト（平準化）される。広範な変化は、品質の急激な変化をもたらし得る。
【０１７５】
選択されたシグマのために、
【数７７】
0006286718.tif 000078
式（７７）
式中、sigmaは現在のフレームのいずれかのサイドで、３タップを使用すべく、１．５として選択される。特定のフレームについて、上記フィルタは、いずれかのサイドにおいて、複数の（filter_size/2）サンプルを持つ一連のサンプルに対し適用される。
【数７８】
0006286718.tif 000079
式（７８）  式中、dは参照サンプルに対する現在のサンプルのインデックスである。
【数７９】
0006286718.tif 000080
式（７９）
【数８０】
0006286718.tif 000081
式（８０）
式中、qおよびsumは、各参照サンプルに対しゼロに初期化される。最終的なqp_deltafは次のように導き出される。
【数８１】
0006286718.tif 000082
式（８１）
【０１７６】
第２のパス分析内の次の動作２２２２は、各フレームのためのターゲット固定中間Ｑｐおよびビットターゲットを検出することである。一形態において、この動作は、固定ターゲットＱｐジェネレータ５２２によって実行されてよい。この動作において、処理は、可能なＱｐ選択肢のセットの反復を使用し、第２のパスのための最善なＱｐを検出する。最善なＱｐは複数の前のセクション（例えば、式（７４）から（７５）および（８１））で導き出される複数のデルタＱｐ係数を適用する一方で、ターゲットビットレートをもたらし得るものである。この反復は、動作２２２４から２２３２によってカバーされる。これは、各フレームのためのターゲットＱｐおよびビット数をもたらす。
【０１７７】
一アプローチにおいて、複数のＱｐ選択肢のセットは、１２８である、可能な限り最も粗いＱｐを設定２２２４することで開始し、０．２５である、可能な限り最も微細（最小）なＱｐ段階サイズまで、バイナリオーダ（段階を各反復の半分に分割する）で進む。よって、次のようになる：
【数８２】
0006286718.tif 000083
式（８２）
target_bitsより少ないビット数を付与するそれらの段階をスキップする。
【数８３】
0006286718.tif 000084
式（８３）
式中、target_bitsは、ターゲットビットレートから判断される。反復内の各Ｑｐについては、expected_bits合計がこの新しいＱｐを使用し、各フレームのexpected_frame_bitsを計算し、それらを分析中のシーケンス内の全フレームに対し、累積することで計算される。expected_bitsは、次のように計算される。各フレームに対し、まず、現在のフレームタイプおよびランクに対応するscaled_qが次のように導き出される。
【数８４】
0006286718.tif 000085
式（８４）
式中、rankQP[t][r]は、複数の初期の既定のＱｐである。このscaled_q[i]を使用し、現在のフレームに対し予想されるビット数は、次のようになる。
【数８５】
0006286718.tif 000086
式（８５）
【数８６】
0006286718.tif 000087
式（８６）
target_bitsに最も近いビット数を付与するＱｐが第２のパスの最善の中間Ｑｐとして選択される。最善のＱｐを見つけるための反復の最大数（Ｑｐ段階サイズの見地より）は、次の式によって、制限される。
【数８７】
0006286718.tif 000088
式（８７）式中、2は、Qstep = 0.5およびQstep = 0.25に対応する２つの追加的な段階を意味する。
【０１７８】
より一般的に言うと、はじめに、段階（Qstep）は２５６に、Qpは０に設定される。当該段階は０．５を乗じされ、新しい段階として設定される。次に、Ｑｐが当該段階に追加され、新しいＱｐ（現在、値１２８において）として設定される（動作２２２４および上記式（８２））。推定合計ビット数が、分析中の選択されたフレームに対し、計算２２２６される（式（８３）から（８６））。適応量子化に加え、ピラミッドランクおよびフレームタイプの両方が、式（８４）からの推定合計ビット数の判断において要因とされることに留意されたい。その後、０．２５の段階がまだ到達されていないかどうか判断される（２２２８および式（８７））。到達されていない場合、その後、処理は、推定される（予期されるとも言う）ビット数が、ターゲットビット数（式（８３））より少ないかどうかを確認すべく、チェック２２３０する。そうである場合、処理は、直ちに最後の段階値に０．５を乗じ、その後、新しい段階をＱｐに追加することにより、次の新しい段階を取得する動作２２２４に戻り、処理は再びループされる。推定されるビット数がターゲットビット数より大きい場合、まず、段階はＱｐ（２２３２）から減算された後、新しい段階およびＱｐを設定すべく、処理はループバックされる。Ｑｐが、ターゲットビット未満からターゲットビット超の間で変動するよう、これらの動作が設定されており、固定ターゲットＱｐがターゲットビット値近くに落ち着くまで行ったり来たり繰り返す。段階が０．１２５に到達すると（０．２５未満の１段階）、ループは継続されず、複数のフレームのためのターゲットビット数に近い、複数の推定される固定中間Ｑｐが、第２のパスのエンコーディングおよびビットレートコントロールのために渡される。
【０１７９】
処理２００はその後、第２のパスエンコーディングおよびビットレートコントロール２２３４で継続し、第２のパスエラー訂正およびビットコントロール５０６によって実行されてよい。この動作は、各フレームのエンコーディング前のフレームレートコントロールであり、当該フレームレートコントロールは、最終エラービット数の配布、およびターゲットビット数および最終的な現在のフレームＱｐの計算を含んでよい。固定ターゲットＱＰに対する初期の２パスアルゴリズム（動作２２２２）が、各フレームのための推定されるscaled_qおよび推定されるＱＰを付与する一方で、複数の予測エラーおよび複数のビットレート偏差を補償すべく、第２のパスの実際のエンコーディング中に、各フレームに対し推定されるＱｐは依然訂正される必要がある。動作２２２２での推定されるターゲットビット数および固定ターゲットＱｐの計算は、第２のパス分析２２１０というよりむしろ、第２のパス分析２２１０に追加される、第２のパスエンコーディングおよびビットレートコントロール２２３４の一部として考えられてよい。エラー訂正は次のように、適用される。
【０１８０】
予測エラー訂正２２３６は、これまでにエンコードされた、および初期の第２のパス中に計算された（using expected_frame_bitsを使用して）全フレームの予想されるビット総数からの実際のビット総数の偏差に対する補償を含む。補償は、次のように現在のフレームＱｐに適用される。一時的なバッファは次のように初期化される。
【数８８】
0006286718.tif 000089
式（８８）
【数８９】
0006286718.tif 000090
式（８９）
式中、total_expectedBitsは、シーケンス内の全フレームのexpectedBitsの総数であり、expectedBits_sumは、これまでにエンコードされた全フレームのexpectedBitsの総数である。
【数９０】
0006286718.tif 000091
式（９０）
【数９１】
0006286718.tif 000092
式（９１）
式中、tgt_errはビット総数エラーであり、est_qはビット総数エラーに対し調整された推定されるＱｐである。式中、scaled_qは、式（８４）で導き出される現在のフレームのＱｐであり、actualBits_sumは、これまでにエンコードされた全フレームの実際のビット総数である。一アプローチにおいて、この補償は、複数のフレームに対し、選択的に適用されてよく、それによって、ベース（ランク０）における若しくはベース（ランク０）により近い箇所における複数のフレームに、より高い優先度が付与されるといった、ランクに従った優先度を付与する。
【０１８１】
ターゲットビットレートからの実際のビットレートの偏差が、より最終的なターゲットＱｐを導き出すべく、推定されたＱｐを調整することで補償されるよう、ターゲットビットレートエラー訂正２２３８も実行されてよい。当該偏差は以下のように補償される。
【数９２】
0006286718.tif 000093
式（９２）
式中、est_qは、ターゲットビットレートエラーのためにここで調整される推定されるＱｐであり、式中、targetBits_sum およびtotal_nsBitsはそれぞれ、ターゲットビット総数、およびこれまでにエンコードされた各フレームの非スケーラブルなビット数である。現在のフレームのターゲットビット数は、第１のパス分析からのビット推定モデルを使用する、各フレーム（式（９２））のための新しい推定されるターゲットＱｐを使用し、計算２２４０される。
【数９３】
0006286718.tif 000094
式（９３）
【０１８２】
処理は次に、フレームをエンコードしてよく、各フレームの終了において、複数のレートコントロールフレーム統計を更新２２４２してよい。各フレーム（ｉ）のエンコーディング後、複数の異なる累積の統計が次のように更新される。
【数９４】
0006286718.tif 000095
式（９４）
【数９５】
0006286718.tif 000096
式（９５）
【数９６】
0006286718.tif 000097
式（９６）
【数９７】
0006286718.tif 000098
式（９７）
【０１８３】
フィールドの終了（ＥＯＦ）チェックが実行２２４４され、ＧＯＰ、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でなく、それが分析中でない場合、第２のパスエンコーディングおよびビットコントロール処理２２３４が再実行される。ＥＯＦに達したら、複数のレートコントロールパラメータを消去する、ＲＣシャットダウン２２４６が実行される。
【０１８４】
［２パスＶＢＲアルゴリズムの概要］
このセクションは、概して図２２Ａから２２Ｂを参照しつつ、アルゴリズムフローを簡潔に記載する。
【０１８５】
１．分析パス：完全なシーケンスが既定のＣＱモード内の第１のパスでエンコードされる。分析パスInter Qpが、平均的な複雑度、ターゲットビットレート（ｂｐｐ）および、多くの実験に基づいて開発されたＱｐモデリングに基づいて導き出される。フレームＱｐ、複数のビット、複雑度等の複数のフレームレベル統計は、ｓｔａｔ（メタデータ）ファイルに書き込まれる。
２．第２のパス：分析パス内のｓｔａｔファイルに書き込まれた複数の異なるフレームレベルｓｔａｔが、複数のフレームバッファ内に読み取られる。第２のパスの開始前に、各フレームのためのビットターゲットを導き出すべく、レートコントロール分析がシーケンス内の全フレームに対し行われる。ビットターゲットは、全体のビットレートをターゲットに収束させるものである。当該アルゴリズムの主要な思想は、第１のパスｓｔａｔに基づくターゲットビットレートに導く、固定Ｑｐを第２のパスのために見つけ出すことにある。キーフレームブースティングおよび（時間的）複雑度マスキングから導き出される複数のデルタＱｐ係数を使用し、適応量子化がフレームＱｐにわたり適用される。
Ａ．複数の低い複雑度または静的シーンのキーフレームブースティング：複数の複雑度の低いシーンにおける複数のキーフレームについて、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数のビット割合に基づいて検出され、Ｑｐ重み付け係数は各ＧＯＰ内のＩ‐ピクチャのために導き出される。
Ｂ．ビットシャフリングを使用する時間的複雑度マスキング：同様に、全フレームの残りに対し、複数の時間的な重み付け係数が、平均（各々のタイプおよびランク）に対するビット数の複数の相対的割合を使用し、導き出される。
Ｃ．Ｑｐ係数スムージング：同一タイプおよびランクの複数の連続するフレームに対する複数のＱｐ係数は、複数の連続するフレーム（同一タイプおよびランクの）間のＱｐの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト（平準化）される。広範な変化は、品質の急激な変化をもたらし得る。
Ｄ．  各フレームのためのシーケンスおよびビットターゲットの中間Ｑｐの検出：この段階では、複数の可能なＱｐ選択肢のセットで反復し、第２のパスの最善なＱｐを見つける。最善なＱｐは、複数の前のセクションで導き出される複数のデルタＱｐ係数を、対応するフレームＱｐに適用し、かつ、各フレームのビット数を導くためのビット推定モデルを使用しつつ、ターゲットビットレートをもたらし得る。終了時、これは各フレームのターゲットＱｐおよびビット数を付与する。
３．Ｐｉｃレートコントロール：これは、各フレームのエンコーディング前の、現在のフレームＱｐを決定するフレームレートコントロールである。
Ａ．  推定されるＱｐ：初期の２パスアルゴリズム（動作２２２２）は、各フレームの推定されるＱｐを付与する。しかしながら、複数の予測エラーおよび複数のビットレート偏差を補償すべく、第２のパスの実際のエンコーディング中に、各フレームに対し、推定されるＱｐは訂正される必要がある。
Ｂ．予測エラー：これまでにエンコードされた全フレームの実際のビット総数と予想されるビット総数との間の偏差は、フレームＱｐ上で補償される。
Ｃ．ビットターゲット：ターゲットビットレートからの実際のビットレートの偏差も、ターゲットＱｐを導くための推定されるＱｐ上で補償される。
Ｄ．ターゲットビット数：現在のフレームのためのこのターゲットビット数は、ビット推定モデルを使用するターゲットＱｐに基づいて計算される。
４．Ｐｉｃ  ＲＣ更新：これは、各フレームエンコードの終了において、現在のフレームＱｐ、予想されるビット数、ターゲットビット数および実際のビット数に基づいて、複数の累積的なフレーム統計を更新する。
５．ＲＣシャットダウン：複数のレートコントロールパラメータを消去する。
【０１８６】
［ルックアヘッドを備えた、１パスＣＢＲレートコントロール］
図２３を見ると、本開示の少なくとも一部の実装に従って配置された、ルックアヘッド処理２３００を備えた、１パスＣＢＲレートコントロールが示されている。処理２３００は、２３０２から２３６４までの番号が一様に付けられた、１または複数の動作によって示される、１または複数の動作、機能、またはアクションを含んでよい。処理２３００は、ＮＧＶコーデックに追加され得る、１パスのルックアヘッドレートコントロールモードを形成してよい。非限定的な例として、処理２３００は、図１のエンコーダシステム１００、レートコントロール４００、および／または本明細書に記載された任意の他のエンコーダシステム若しくは複数のサブシステムの追加の部分によって担当される、次世代ビデオエンコーディング処理の少なくとも一部を形成してよい。ルックアヘッドを備えた１パスＣＢＲレートコントロールの多くの動作の複数の説明は、一形態若しくは別形態における、１パス処理７００（図７）によって既にカバーされているか、または含まれており、これらの場合、説明はここで繰り返されない。複数の同一または類似の動作および／または両方の処理における複数のコンポーネントは、同様に番号が振られている（例えば、処理７００のＲＣスタートアップの実行は動作７０２、処理２３００では２３０２）。
【０１８７】
２パスレートコントロールは最善の品質を提供する一方で、２パスレートコントロールはまた、第１および第２のパス分析を形成すべく、完全なフレームシーケンスの２回の分析に起因する、大きな遅延を生じさせる。よって、この代替的な１パスＣＢＲルックアヘッドレートコントロールモードが、品質、時間、および複雑度の見地から、１パスＣＢＲおよび２パスＶＢＲ間の妥協として提案される。分析されている同一シーケンス内の現在のフレームに対する複数の将来のフレームの見地から、このモードは、部分的なルックアヘッドをシーンの複雑度および予備的な動き分析に対し提供する。これは、品質およびビットレートをより良くコントロールすべく、複数のルックアヘッドバッファを使用することで達成される。全体的なレートコントロールアルゴリズムは、１パスＣＢＲレートコントロール（処理７００）で言及したアルゴリズムと同様で、次の複数のセクションで概説する複数の修正がなされている。
【０１８８】
詳細について見ていくと、処理２３００は、レートコントロールスタートアップの実行２３０２を含む、多くの動作について同様に進む。レートコントロールスタートアップの実行２３０２は、複数のＲＣパラメータの初期化および、複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ（複数のバッファ、複数の推定モデル等）を複数の適切な値に設定することを含んでよい。ビットレートおよびシーケンスの解像度に基づいて、複数の初期の既定のＱｐが所定のテーブル、および処理７００に関する式（７）および（４）に基づいて導き出される。
【０１８９】
しかしながら、スタートアップ動作２３０２は、事前分析ルックアヘッドフレーム２３０３も含む。ルックアヘッドのため予め、ルックアヘッド待機時間またはバッファサイズを指定すべく、新しいコマンドラインパラメータ「-la」が追加される。既定で、ルックアヘッドサイズは０であり、この場合、コーデックは既定に従って動作する。ゼロ以外のルックアヘッド値が指定された場合、複数のルックアヘッドバッファが多くの入力フレームで埋められるまで、フレームエンコーディングは遅延される。一形態において、ピクチャの実際のエンコーディングのみが遅延されるが、フレームタイプの決定は、Ｐｄｉｓｔａｎｃｅモジュールの既定の場合と同様に継続する。このレートコントロールモードの基本的アイデアは、現在のフレームの量子化を決定する前に、ルックアヘッドバッファ内のあらゆる将来のフレームの時間的な複雑度（および動きデータ）を予見することにある。このように、システムは、フレームの量子化を決定する前に、シーンの将来の複雑度（これまでに複数のルックアヘッドバッファが許容する）並びに過去の両方を考慮する。
【０１９０】
事前分析は、事前分析のためのルックアヘッドまたは複数の将来のフレームの選択を含み、事前分析は、分析およびコードされている現在のフレームの分析に使用される。ルックアヘッドは、一例において、０から２５０のルックアヘッドフレーム間の任意の値を取ることができ、ルックアヘッドは、非常に多くのフレームによって、入力‐出力ラグを増加させる。ルックアヘッドフレーム数はまた、別の複数の例において、最小１から４および最大３０または１２０としてよい。選択されるルックアヘッドフレーム数は、アプリケーション（ビデオ会議等の場合にリアルタイムかライブか否か、あるいはライブＴＶショー等の若干の遅延、あるいはＤＶＤ記録のためといったような非ライブ）に依存してよく、その場合、リアルタイムにより近くなればなるほど、良好な品質のビデオのために選択されるルックアヘッドフレーム数は小さくなる。また、システムバッファサイズ（エンコーダにおける、あるいはデコーダにおける）は、処理可能なフレーム数を制限してよい。
【０１９１】
ルックアヘッドは、一形態において、複数の将来のフレームを参照する。将来のフレームは、現在のフレームに対し、どの種類の量子化（Ｑｐ）が使用されるべきかを判断するために事前分析される（参照される参照フレームグループとして表現されてよい）。よって、ルックアヘッドは単純に、将来いくつのフレームが参照されるかを参照する。それにより、将来に関する何らかの情報（例えば、複数の将来のフレームは動きにおいて類似であるかどうか、すなわちシーンが低速または高速に移動中かを通知する可能性のある）を把握する。このような情報は、どの程度正確（どの量子化値／品質レベル）に現在のフレームをエンコードするかを判断するのに役立つ可能性がある。例えば、フレーム内のシーン／ビデオオブジェクトの一部が低速に移動中（持続的）であれば、シーン（そのような複数のフレーム）のその領域は、高品質でコードされるべきである。というのは、当該フレームは更新する必要なく、他の複数のフレームに再利用（コピー）され得るからである。一方で、フレーム／シーンの一部が高速で移動中であれば、最高品質でのコーディングを保証しない可能性がある。というのは、持続性が短く、シーンはすぐに範囲外になるからである。
【０１９２】
１具体例において、フレーム番号４が複数のフレームシーケンス内で処理中の場合、フレーム０は最初のフレームであった。３０のフレームのルックアヘッドを仮定すると、フレーム４のコーディングについては、フレーム番号３４までの複数のフレームが読み取られ、シーン内の持続性の程度を判断すべく、これら３０の追加のルックアヘッドフレームが使用される。シーン内の持続性の程度は、最高のエンコーディング品質を提供する可能性のある、空間的に異なるブロック／タイルベースの量子化マッピング（ピクチャ量子化とは異なるが、それに関連がある）の判断に導く可能性がある。一方で、３０の将来のルックアヘッドフレームがなければ、将来の持続性を判断することは可能ではなかったかもしれず、現在のフレームは、特定領域に対し、品質はより良いかもしれないが、ほどほどの量子化（より精緻な量子化の代わりに）の使用をもたらしたかもしれない。
【０１９３】
事前分析は、複数の動き特性に加え、各ルックアヘッドフレームの複雑度を判断することを含んでよい。そのようなものとして、現在のフレームのグローバルピクチャベースの量子化マップ並びにローカルブロックベースの量子化マップを判断するためのオブジェクト検出等があり、それにより、フレーム、またはフレームセクションが、参照または複数の他のフレームに対するコピーとして再利用される可能性があるかどうかを考慮しつつ、最高品質を得る。
【０１９４】
Ｐｄｉｓｔａｎｃｅ処理に関しては、ｐｄｉｓｔａｎｃｅロジックに何の変更もなく、フレームタイプおよびランクの複数の決定は、上記で説明した通り発生する。前述の通り、フレームエンコーディングのみが遅延される一方で、ピクチャのルックアヘッド数は、複数のルックアヘッドバッファ内に累積される。追加の待機時間パラメータが各入力フレームに関連付けられ、各入力フレームは、一回における複数のｐｄｉｓｔａｎｃｅフレームのサブグループの表示順序でｔｒｕｅに設定されている。各入力フレームに対し、ルックアヘッドバッファカウントがルックアヘッド値を超える場合、フレームタイプの決定は発生済みである。フレームエンコーディング決定は、この待機時間値に依存してよい。シーケンスがＥＯＦに到達した場合、この待機時間値は、フレームエンコーディングの複数の決定において無視される。
【０１９５】
レートコントロールスタートアップが実行された後、ルックアヘッドを備えるピクチャレートコントロールが実行２３０３され得る。ピクチャレートコントロール動作７０３と同様、これは、各フレームのエンコーディング前のフレームレートコントロールであり、これにより、現在のフレームＱｐを判断する。
【０１９６】
また、処理２３００は、処理７００内の複数の動作と同一または類似の他の複数の動作を含む。処理７００内の複数の動作は、処理７００で十分説明済みである。例えば、平均時間的（および空間的）複雑度（ＴＳＣ）の計算２３０４（複数のルックアヘッドバッファ内の複数の将来のフレームの入力に基づくことになるが）、複数のＱｐ制限値の計算２３０６、およびバッファステータスを使用しないフレーム判断の複数の部分２３１４が挙げられる。フレーム判断の複数の部分２３１４には、シーケンス開始の複数の動作（２３２２から２３２６）および複数の空白若しくは静的シーン（動作２２１６から２２２０）などがある。これらの動作の説明は、ここで繰り返す必要はない。
【０１９７】
分析されるフレームシーケンスは、シーンの開始ではなく、かつ、空白若しくは静的シーンではないと判断されると、動作２３００は、ルックアヘッドを備えるバッファステータスに基づき、フレームＱｐを提供する２３２７で進む。それは、一例において、本明細書で説明したように、バッファコントロール４１２によって実行されてよい。ここにおいて、バッファコントロールは、次の点を除き、複数の前のアルゴリズムと同一または類似である。異なる点は、複雑度デルタの導出およびルックアヘッドバッファ内の選択された複数の将来のフレームの分析である。これについて、後述する。検討するに、現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Ｑｐが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを中間動作ポイントに近づける現在の中間Ｑｐに対し、適用され得るデルタＱｐが導き出される。これは、次のように導き出される。
【０１９８】
各フレームのエンコーディング前に、バッファコントロールは、バッファモデル４１０、およびルックアヘッドバッファモデルであるこの場合、バッファ充填量ユニット４１４を一例において使用し、現在のフレームが、現在の中間Ｐｑｐ（理想的なターゲットビットレートを提供するターゲットZERO_RANKＰ‐ピクチャ量子化（Ｑｐ））から、そのタイプおよびランクに依存する式（４）を使用して導き出されるＱｐでエンコードされている場合、バッファステータスを予想してよい。バッファオーバーフローまたはアンダーフローを回避すべく、推定されるバッファステータスに基づいて、現在のＰｑｐは、未修整または修正済みのいずれかとされる。シーンの複雑度の変化に起因するバッファの揺らぎが存在する場合はいつでも、バッファコントロールは、現在のＰｑｐをターゲットＰｑｐに近くに保つべく、現在のＰｑｐの変調を試行する。よって、バッファを中間動作ポイント（buf_mop）に保つことは、Ｐｑｐを、特定の複雑度のシーンに対する中間Ｑｐ動作ポイント近くに維持することと等しい。Ｐｑｐがバッファコントロールによって修正される場合はいつでも、複数の異なるフレームタイプおよびランクに対応するすべてのＱｐは、式（４）を使用して更新される。バッファコントロールは次のように動作する。
【０１９９】
図２０を再度参照するに、バッファ初期化２３２９は、バッファ初期化７３０および式（２７）から（３０）および（３２）に関し前述済みのものと同様であるので、ここでは繰り返さないが、平均バッファ充填量（avg_buf_ful）がここで判断される必要がない点が異なる。
【０２００】
処理２３００は、バッファビット数のルックアヘッドバッファ推定２３３１を継続する。ここで、処理は、次の点を除き、処理７００およびビット推定７３２のものと同一または類似である。異なる点は、ＳＧＯＰの代わりに、処理は複数のルックアヘッドバッファ内のすべての利用可能なフレームに対し適用され、ルックアヘッドバッファ内の複数の将来のフレームを含む、すべての利用可能なフレームのコーディングタイプが決定される。前と同じく、ビット数は履歴が存在するかどうかどうかの判断２３３４によって推定される（fr_est_bits）。履歴が存在しない場合は、ビット率推定方法２３３６を、履歴が存在する場合は、線形推定方法２３３８を使用する。ビット率推定方法２３３６および線形推定方法２３３８の両方が、現在のＰｑｐから導き出されるＱｐに依存して、複数の初期（シーケンス開始／スタート）フレームに使用される。ここで関連する修正は、ビット数を推定すべく、各フレームのための複雑度デルタに使用される時間的適応制御中に、以下で導き出される複数のqp_deltaf係数を適用することである。現在のフレームシーケンス内でコード済みのそれらのフレームについては、それらの実際のビット数は、バッファ内で更新済みである。つまり、複数のバッファ、複数のＱｐ、および複数の推定モデルの現在の状態に関し、バッファ推定の目的は、複数のルックアヘッドバッファ内のすべての利用可能な将来のフレームが、複数のＱｐの現在の動作セットを使用してコードされた場合、バッファステータスおよびバッファインクリメントを予想することにある。当該推定によって提供されるビット予測２３４０は、その後、バッファインクリメントおよびバッファ推定計算に対し利用可能になる。
【０２０１】
バッファインクリメントおよび推定されるバッファは、次のように計算２３４２される。ここで、バッファインクリメントは、ルックアヘッドバッファ内の全フレームに対し、buf_incr = 0である。
【数９８】
0006286718.tif 000099
式（９８）
式中、fr_est_bitsは、前述した開始シーケンスフレームＱｐ処理のビット率方法または線形推定方法を使用する、現在のフレームのための推定されるビット数である。式中、target_rateは、フレーム毎のターゲットビット数であり、その時空複雑度およびＱｐは、式（４）を使用して現在のＰｑｐから導き出される現在のフレームタイプおよびランクに対応する。
【０２０２】
現在のバッファ充填量がbuf_fulの場合、同一Ｐｑｐで継続すると、予想されるバッファステータス（buf_est）は、次のようになる。
【数９９】
0006286718.tif 000100
式（９９）
【０２０３】
これは、複数のルックアヘッドバッファ内の全フレームが、同一動作中間Ｐｑｐを使用して、コードされた場合のバッファステータスを示す。
【０２０４】
処理７００と同様、バッファに対するビット予測が取得されると、および複数のバッファレベル、複数のインクリメント、および複数の閾値が確立されると、処理２３００は、デルタＱｐの判断２３４４で継続してよい。デルタＱｐの判断２３４４は、Ｑｐの最大調整を設定すべく、一例において、デルタＱｐユニット４１６によって実行される。詳細について検討するに、はじめにバッファ内の中間動作ポイントが選択される。例えば、式（２７）で、buf_fullが、全バッファ（buf_max）の約４０％レベルであるbuf_mopに設定される。現在のバッファ充填量（buf_ful）がこの動作ポイント（buf_mop）からそれる場合は常に、buf_fulを動作ポイントにゆっくり戻そうとする試行がなされるべきである。バッファの中間動作ポイント（buf_mop）に対応する、Ｐｑｐ、すなわちPqp_mopのｔめの中間動作ポイントが存在すると仮定できる。つまり、バッファコントロールの目的は、Ｐｑｐをこの動作ポイントに近く維持することにあり、Ｐｑｐがシーンの複雑度の変更に起因し、動作ポイントから大きくそれるときは常に、動作ポイントに到達すべく、Ｐｑｐが少量変調されてよい。
【０２０５】
しかしながら、複数の隣接フレーム間での、より大きい量子化段階は、品質における複数の視覚的変化を引き起こすことになる。よって、フレームからフレームにわたり、Ｐｑｐを複数の小さいデルタ値のターゲット動作ポイントに戻す試行がなされるべきである。よって、デルタ値は、Ｑｐがフレームからフレームにわたり、どの程度変更可能についての制限値である。buf_fullが現在のバッファ充填量である場合、buf_estは推定されるバッファレベルであり、buf_incrはバッファ内のインクリメントであり、次に、ｖｂｖのためのdelta_qpが次のように導き出され得る。
【数１００】
0006286718.tif 000101
式（１００）
ここで、
【数１０１】
0006286718.tif 000102
式（１０１）
【０２０６】
デルタＱｐ重み付け係数（vbv_delta_qpf）は、バッファ偏差による。これは、現在のバッファステータスに対応するdelta_qpfである。よって、上記のルックアヘッドを持たない１パスシステムの場合のように、バッファインクリメントと閾値を比較する代わりに、ここでは、これまでにエンコードされた複数のフレームのビットレートに基づく時間的な現在のバッファとエラー計算との間の差分に基づいて、vbv_delta_qpfが判断される。この現在のバッファ２３４５は、次のように計算される。一時的なバッファが初期化される：
【数１０２】
0006286718.tif 000103
式（１０２）
【数１０３】
0006286718.tif 000104
式（１０３）
式中、enc_orderは現在のフレームのエンコーディング順序番号であり、total_framesはエンコードされる複数のピクチャの合計数である。ｖｂｖデルタは次に、一例において、ｖｂｖユニット４２０によって次のように計算されてよい２３４７。
【数１０４】
0006286718.tif 000105
式（１０４）
【数１０５】
0006286718.tif 000106
式（１０５）
式中、tgt_errは、全ターゲットビット数と、これまでにエンコードされた複数の過去のフレームに起因する前のターゲットエラーを含む、推定されるビット数との間の差分として付与されるターゲットエラーである。修正されたＰｇｐ'は式（１００）に従って計算２３４９されてよい。
【０２０７】
修正されたＰｑｐ'は次に、動作７０６および２３０６に関し記載したように、複数の連続するフレーム間の大きすぎる偏差を回避すべく、複数のＱｐ制限値２３５１を受ける。
【数１０６】
0006286718.tif 000107
式（１０６）
【０２０８】
その後、Ｐ  Ｑｐがフレームにおいて修正される場合は常に、複数の異なるランクに対応する複数のＱｐが式（４）を使用して更新されるよう、Ｑｐ更新２３５３が実行されてよい。現在のフレームタイプおよびランクに対応するＱｐが、フレームの実際のコーディングに使用される、現在のフレームのest_qpとして割り当てられる。
【０２０９】
これらの調整がなされた後、複雑度デルタが最新のＱｐに追加されてよい。具体的に言うと、一例において、複雑度デルタ（cplx_delta_qpf）は、ｃｍｐｌｘユニット４２２によって計算されてよく、複雑度デルタ（cplx_delta_qpf）は、一例において、コントロール４２４によって実行されるルックアヘッド時間的適応量子化２３５５を含んでよい。２パスＶＢＲレートコントロール（処理２２００）で使用される時間的適応量子化の思想と同様、処理２３００は、複数のルックアヘッドバッファ内の複数の将来のフレームの複数の複雑度を使用して、適応量子化を１パスＣＢＲに組み込むことができる。キーフレームブースティングおよび時間的複雑度マスキングは、選択されたフレームＱｐにわたり、適応量子化を使用して組み込まれる。キーフレームブースティングおよび複数のフレーム複雑度の変化は、現在のフレームＱｐに適用され得るデルタＱｐ係数に、マッピングされる。時間的適応量子化が次のように導き出されるdelta_qpfを使用し、現在のフレームに適用される。
【０２１０】
ルックアヘッドキーフレームブースティングユニット４２６は、複数の低い複雑度または静的シーン内でキーフレームブースティング２３５７を実行してよい。処理２２００で説明した通り、複数の複雑度の低いシーンの複数のキーフレームについては、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数のルックアヘッドフレームの複数の複雑度割合および複雑度の複数の係数に基づいて検出される。Ｑｐ重み付け係数がＩ‐ピクチャに対し、導き出される。key_scale_factorは、前のセクション（式（６２）と（６３））と同様に導き出される。各フレームｊについて、以降のＩ‐ピクチャｋは、
【数１０７】
0006286718.tif 000108
式（１０７）
式中、TSCは、分析されるフレームの時間的な空間複雑度である。しかしながら、フレームは次のようにデルタＱｐ係数にマッピングされる。
【数１０８】
0006286718.tif 000109
式（１０８）
【０２１１】
ルックアヘッド時間的複雑度マスキングユニット４２８は、時間的複雑度マスキング（あるいは単に複雑度マスキング）２３５９を実行してよい。時間的複雑度マスキング２３５９は、現在のフレームの複雑度を、複数のルックアヘッドバッファ内のすべての利用可能なフレームの平均的な複雑度に対し比較できる。複数のルックアヘッドバッファ内のすべての利用可能なフレームの残りに対する、複数の時間的な重み付け係数が、これまでに利用可能な全フレームの平均的な複雑度に対する、複雑度の複数の相対的割合を使用し、導き出される。はじめに、平均的な複雑度がルックアヘッド内の全フレームに対し、計算されるavgTSC。各フレームのデルタＱｐ係数は、平均的な複雑度に対する複数のフレームの複雑度の相対的割合として計算される。
【０２１２】
複数のルックアヘッドバッファ内の利用可能なシーケンスの各フレーム（ｉ）について、fs[i].TSC < avgTSCの場合、
【数１０９】
0006286718.tif 000110
式（１０９）
fs[i] .TSC > avgTSCの場合、
【数１１０】
0006286718.tif 000111
式（１１０）
【０２１３】
ここで、時間的な複雑度が、フレームＱｐのスケーリング係数として使用可能な複数のＱｐデルタ係数にマッピングされる。
【０２１４】
Ｑｐ係数スムージング２３６１を実行すべく、ルックアヘッドＱｐ係数スムージングユニット４３０が使用されてよい。複数のルックアヘッドバッファ内の利用可能な連続するフレームに対する複数のＱｐ係数は、複数の連続するフレーム間のＱｐの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト（平準化）される。広範な変化は、品質の急激な変化をもたらし得る。これらのデルタＱｐ係数は、次のように導き出されるフレームＱｐに適用される。選択されたシグマについて、
【数１１１】
0006286718.tif 000112
式（１１１）
式中、sigmaは現在のフレームのいずれかのサイドで、３タップを使用すべく、１．５として選択される。特定のフレームについて、上記フィルタは、いずれかのサイドにおいて、複数の（filter_size/2）サンプルを持つ一連のサンプルに対し適用される。
【数１１２】
0006286718.tif 000113
式（１１２）
式中、dは参照サンプルに対する現在のサンプルのインデックスである。
【数１１３】
0006286718.tif 000114
式（１１３）
【数１１４】
0006286718.tif 000115
式（１１４）
式中、qおよびsumは各参照サンプルに対し、ゼロに初期化される。最終的なqp_deltafは次のように導き出される。
【数１１５】
0006286718.tif 000116
式（１１５）
【０２１５】
次に、フレームＱｐを計算２３６３すべく、各フレームに対し計算されるこれらのデルタＱｐ係数が次の複数の式において使用される。これは、一例において、シーケンス非開始／アクティブなシーンＱｐ計算ユニット４１８によって実行されてよい。複数のｖｂｖ計算に基づいて、est_qpが現在のフレームに推定されるＱｐである場合、かつ、est_qpが複数のＱｐ制限値およびランク（式（１０６）と（４））のために調整されている場合、次のようになる。
【数１１６】
0006286718.tif 000117
式（１１６）
【数１１７】
0006286718.tif 000118
式（１１７）
【数１１８】
0006286718.tif 000119
式（１１８）
式中、修正されたフレームＱｐ（Pqp''）が再び新しい複数の制限値Ｑｐを受ける２３５８。このＱｐ境界チェックは、バッファステータスに応答できるPqp''について有効な第２の境界チェックである一方で、この動作は、開始、静的、あるいは複数の空白のフレームに対する境界チェックも含んでよい。動作７０６および２３０６に関し前述したとおり、例えば、複数の連続するフレーム間の大きすぎる偏差を回避すべく、複数のＱｐ制限値が適用される。Ｑｐは、その後、フレームエンコーディングに利用可能である。
【０２１６】
コーディング状態およびバッファステータスが更新されるよう、レートコントロール（ＲＣ）更新２３６０は、各フレームのエンコーディングが完了後、実行されてよい。複雑度ｃｐｌｘを有する特定のタイプおよびランクの現在のフレームが、act_qpを使用してエンコードされ、それがact_bitsを生成する場合、バッファおよび複数の推定モデルの複数のパラメータが更新される。バッファ更新については、次のようになる。
【数１１９】
0006286718.tif 000120
式（１１９）
【０２１７】
複数の推定モデルの更新については、現在のフレームタイプおよびランクに対応する複数のビット推定を使用する、線形推定モデルが、式（２３）から（２６）を含む、複数のシーケンス開始推定モデルの場合と同様に更新される。
【０２１８】
フィールドの終了（ＥＯＦ）チェックが実行２３６２され、ＧＯＰ、フレームシーケンス、ビデオ、または他の所定の長さの終了を意味するフィールドの終了でない場合、ＴＳＣ計算２３０６で開始する、処理が再実行される。ＥＯＦに達したら、複数のレートコントロールパラメータを消去する、ＲＣシャットダウン２３６４が実行される。
【０２１９】
［ルックアヘッドアルゴリズムを備える１パスＣＢＲの概要］
このセクションは、概して図２３を参照しつつ、当該アルゴリズムフローについて簡潔に記載する。
【０２２０】
１．ＲＣ初期化：複数のＲＣパラメータを初期化する。
２．ＲＣスタートアップ：複数のコマンドラインパラメータに基づいて、複数の異なるレートコントロールパラメータ（複数のバッファ、複数の推定モデル等）を複数の適切な値に設定する。ビットレートおよびシーケンスの解像度に基づいて、複数の初期のＱｐが所定のテーブルに基づいて導き出される。
３．ルックアヘッドを備えるＰｄｉｓｔａｎｃｅ：フレームタイプおよびランクの複数の決定が前と同じく発生する。待機時間パラメータが複数のルックアヘッドバッファ内の利用可能なピクチャ数に基づいて設定される。フレームエンコーディングは、対応する待機時間値が設定されている場合にのみ許容される。
４．ルックアヘッドを備えたＰｉｃレートコントロール：これは、各フレームのエンコーディング前の、現在のフレームＱｐを決定するフレームレートコントロールである。
Ａ．平均的複雑度：複数のルックアヘッドバッファ内の利用可能な全入力フレームに基づき、平均時空複雑度を計算する。
Ｂ．複数の静的／空白シーンのチェック：シーンが静的または一連の空白フレームの場合、既定の固定Ｑｐが使用される。たとえ、これがシーンの途中で発生した場合であっても（例えば短時間の間、シーンが静的／空白になるとき）、複数の最後の安定状態Ｑｐが、これまでの全フレームに対し使用され、それらは複数の空白／静的フレームとして検出される。
Ｃ．フレームの複数のＱｐ制限：
ｉ．シーケンスの開始：それがシーケンスの絶対的開始である場合、複数の実験に基づいて作成された初期のＱｐ推定テーブルが使用され、複数の境界Ｑｐを導き出す。このテーブルは、複雑度、ビットレート（ｂｐｐ）およびZERO_RANKのフレームＱｐのマッピングであり、特定のターゲットビットレートを生成可能な計算された平均複雑度を有する、完全なシーケンスのための中間のZERO_RANKのＰ‐ピクチャＱｐの予測を試行する。複数のＱｐ制限値は、対応する複数の所定のテーブルからも導き出される。
ｉｉ．いくらかの初期の履歴の構築後：平均的な複雑度に対し消費された過去の全ビット数および使用された平均Ｑｐに係るいくらかの履歴を有するゆえ、複数の過去の統計に対する現在のフレームを含む、予想される複雑度およびビット数に基づき、新しいフレームに対するＱｐの予測を試行する。複数の過去の統計に対する現在のフレームは、現在のフレームを含む全ビット消費量をターゲットレートに近付け得るものである。複数のＱｐ制限値が、標準のＰ対ＩおよびＰ対ＦのＱｐマッピングを使用するこのＱｐから導き出される。
ｉｉｉ．既定：上記（ｉｉ）のケースは、現在のフレームの複雑度およびこれまでの実際のビットレートがこれまでの平均的な複雑度およびターゲットビットレートにそれぞれ近い場合にのみ使用される。他の任意のケースにおいては、既定のＱｐがこれまでの平均Ｑｐとなり、複数のＱｐ制限値は、標準のＰ対ＩおよびＰ対ＦのＱｐマッピングを使用するこのＱｐから導き出される。
Ｄ．時間的適応量子化：複数のルックアヘッドバッファ内の利用可能なフレーム全入力フレームの複雑度に基づいて、キーフレームブースティングおよび（時間的）複雑度マスキングから導き出される複数のデルタＱｐ係数を使用し、適応量子化がフレームＱｐにわたり適用される。
ｉ．複数の低い複雑度または静的シーンのキーフレームブースティング：複数の複雑度の低いシーンにおける複数のキーフレームについて、複数の追加ビットを費やすことによって品質を保持することで、他の複数のフレームのビット数を節約することになる。シーンの複雑度は、複数の複雑度割合に基づいて検出される。Ｑｐ重み付け係数がＩ‐ピクチャに対し、導き出される。
ｉｉ．時間的複雑度マスキング：同様に、複数のルックアヘッドバッファ内のすべての利用可能なフレームの残りに対する、複数の時間的な重み付け係数が、これまでに利用可能な全フレームの平均的な複雑度に対する、複雑度の複数の相対的割合を使用し、導き出される。
ｉｉｉ．複数のＱｐ係数スムージング：複数のルックアヘッドバッファ内の利用可能な連続するフレームに対する複数のＱｐ係数は、複数の連続するフレーム間のＱｐの広範な変化を避けるための単純なガウシアンフィルタを使用して、スムーズアウト（平準化）される。広範な変化は、品質の急激な変化をもたらし得る。これらのデルタＱｐ係数は、次のように導き出されるフレームＱｐに適用される。
Ｅ．フレームＱｐ：
ｉ．シーケンスの開始またはシーンの変更：フレームＱｐは、平均的な複雑度、ターゲットビットレート（ｂｐｐ）および多くの実験に基づいて作成されたＱｐモデリングに基づいて、導き出される。このＱｐは、前のセクションＣで導き出された複数の制限値に規制される。時折、モデルは開始（複数の空白フレーム等）の異常な複雑度に起因して、複数の誤ったＱｐを予測する可能性があるので、これは必要である。
ｉｉ．バッファコントロール：任意の他のフレームについて、バッファコントロールはフレームＱｐを決定する。現在のバッファステータスが動作ポイントに近く、かつ、現在のフレームの複雑度がこれまでの平均的な複雑度と同様の場合、既定で、現在の中間動作Ｑｐが現在のフレームのコーディングに使用されるべきである。あるいは、バッファを動作ポイントに近づける現在の中間Ｑｐに対し、適用される必要のあるデルタＱｐ値を導き出したいと考える。これは以下のような一連の段階において導き出される。
ａ．バッファ推定およびバッファインクリメント：複数のバッファ、複数のＱｐ、および複数の推定モデルの現在の状態に関し、複数のルックアヘッドバッファ内のすべての利用可能な将来のフレームが、複数のＱｐの現在の動作セットを使用してコードされた場合、バッファステータスおよびバッファインクリメントを予想する。
（ｉ）利用可能な履歴：十分な履歴が複数のビット推定モデルに構築されると、これらが使用され、フレームがその複雑度に対し消費することとなるビット数、および現在のフレームのタイプおよびランクに対応するＱｐが推定され得る。
（ｉｉ）履歴なし：あるいは、複数の実験から導き出されたいくつかの割合モデルが使用され、特定の複雑度およびＱｐを持つ複数のフレームビットを推定する。これらのビット割合モデルは、Ｉ対Ｐビット率、Ｐ対Ｆビット率等である。
ｂ．複数のデルタＱｐ係数の計算：デルタＱｐの２つの係数が導き出される。１つは、バッファの現在の状態に対応し、もう１つは現在のシーンの複雑度に対応する。
（ｉ）ＶＢＶデルタ：バッファ偏差に起因するデルタＱｐ重み付け係数が計算される。
（ｉｉ）複雑度デルタ：ｄ（ｉｉｉ）で導き出されたデルタＱｐ重み付け係数は、複雑度デルタＱｐ係数として使用される。
ｃ．フレームＱｐ計算：上記ＶＢＶデルタＱｐを現在の中間Ｑｐに追加し、セクションＣで導き出される複数の境界Ｑｐに制限することで、新しいＰ  Ｑｐが導き出される。異なるフレームタイプおよびランクの複数のＱｐがこの新しいＰ  Ｑｐに基づいて再計算される。最後に、複雑度デルタＱｐは現在のフレームＱｐにも追加され、再度セクションＣで導き出される複数の境界Ｑｐに制限される。これにより、最終的なフレームＱｐを付与する。
５．Ｐｉｃ  ＲＣの更新：これは、現在のフレームの複雑度、Ｑｐおよびビット数に基づいて、各フレームエンコードの終了において、バッファステータスおよび複数の推定モデルを更新する。
６．ＲＣシャットダウン：複数のレートコントロールパラメータを消去する。
【０２２１】
［低遅延化コーディングをサポートするための諸変更］
別の態様において、より低いＧＯＰサイズおよびＩＰＰＰコーディングが実装される。そこでは、ビデオ会議等の複数のアプリケーション向けに、低遅延化コーディングをサポートすべく、最新のＮＧＶエンコーダに一連の変更が追加される。低遅延化コーディングのための典型的構成は、（１）ＩＰＰＰコーディング、および（２）通常の場合における約２秒の、すなわち２秒バッファの遅延に対する少数フレームのバッファサイズ、である。ルックアヘッドバッファコントロールアルゴリズムを備える１パスＣＢＲレートコントロールは、低遅延化コーディングシナリオに対処できるが、その理由は次の２つである。
【０２２２】
（ａ）レートコントロールは非常に一般的に動作する。レートコントロールは、複数の固定ＧＯＰサイズ、あるいは複数のピラミッド構造または複数のフレームタイプを全く想定していない。レートコントロールは、どんなタイプまたはランクがレートコントロールにｐｄｉｓｔａｎｃｅモジュールによって割り当てられていても、各フレームのビット数を推定するのに、複数の予測モデルを使用する。あらゆる利用可能な将来のフレームに対するそのような推定されるビット数が累積され、ターゲットビット数に関するエラーとともに現在のフレーム上で補償される。よって、このレートコントロールは、任意の複数のフレームタイプ、任意の複数のＧＯＰサイズまたは任意の複数のピラミッド構造といった、任意の構成と連携できる。
【０２２３】
（ｂ）バッファサイズが指定されない場合、既定で、バッファサイズに２秒バッファ（2*bitrate）が前提とされている。任意のアプリケーションに対し、減少されたバッファサイズが所望される場合、それは、「-bs bufferSizeinKb」パラメータを使用して指定され得る。これは、この値に最大バッファ充填量を設定し、バッファコントロールはこの制限内で動作する。
【０２２４】
バッファサイズがコマンドラインで指定されると、きついレートコントロールが有効になる。概して、多数の将来のフレームにわたるバッファ変更を確認することによって、フレームＱｐは修正され、それにより複数の個別のフレームのビット数における揺らぎを小さくできる。Ｆピラミッドコーディングについては、フレーム間でビット数が非常に高速に変わるので、また、対応する急速な複数のフレーム変化を回避するためにも、これは必要である。このスキームは本明細書で開示される通り適応される。しかしながら、きついレートコントロールの場合、バッファステータスは、各フレームに対し個々にチェックされ、フレームＱｐは、推定されるバッファステータスに基づいて補償される。
【０２２５】
減少された（およびきつい）レートコントロールおよび推定されるバッファステータスに基づくフレームＱｐ補償を達成すべく、次の複数の式が使用される。各フレームに対する、フレームＱｐが各レートコントロール処理において上記の通り決定された後、est_qpおよびest_bitsが現在のフレームに、推定されるＱｐおよびビット数である場合、
【数１２０】
0006286718.tif 000121
式（１２０）
【数１２１】
0006286718.tif 000122
式（１２１）
【数１２２】
0006286718.tif 000123
式（１２２）
【数１２３】
0006286718.tif 000124
式（１２３）
【０２２６】
本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および／またはハードウェアおよび／またはこれら任意の組み合わせにおいて実装されてよい。例えば、システム３００に係る様々なコンポーネントは、例えばスマートフォン等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ（ＳｏＣ）のハードウェアによって少なくとも部分的に提供されてよい。当業者は、本明細書に記載された複数のシステムは、対応する複数の図面内に示されていない複数の追加コンポーネントを含んでよいことを認識してよい。例えば、本明細書に記載の複数のシステムは、明確化のため示されなかった、ビットストリームマルチプレクサモジュールまたはデマルチプレクサモジュール等の複数の追加コンポーネントを含んでよい。
【０２２７】
処理７００、２２００および２３００は、本明細書に記載された複数のコーダシステムの任意のものを介して実装されてよい。さらに、複数の予測エラーデータパーティション、複数の元のデータパーティション、またはウェーブレットデータ等の任意の数のビデオデータの具現化において、これらの処理は、シリアルまたはパラレルのいずれかで繰り返されてよい。
【０２２８】
本明細書のこれら例示的処理の実装は、示される複数の動作を図示された順番で含んでよい一方で、本開示はこの点において限定されず、様々な例において、本明細書のこれら例示的処理の実装は、示された複数の動作のサブセットのみのタスクを、および／または図示されたものとは異なる順番において含んでよい。
【０２２９】
本明細書に記載された複数のシステムに係る様々なコンポーネントは、ソフトウェア、ファームウェア、および／またはハードウェアおよび／またはこれら任意の組み合わせにおいて実装されてよい。例えば、システム１４００に係る様々なコンポーネントは、例えばスマートフォン等のコンピューティングシステムにおいて見い出され得る、コンピューティングシステムオンチップ（ＳｏＣ）のハードウェアによって少なくとも部分的に提供されてよい。当業者は、本明細書に記載された複数のシステムは、対応する複数の図面内に示されていない複数の追加コンポーネントを含んでよいことを認識してよい。例えば、本明細書に記載の複数のシステムは、明確化のため示されなかった、ビットストリームマルチプレクサモジュールまたはデマルチプレクサモジュール等の複数の追加コンポーネントを含んでよい。
【０２３０】
また、本明細書で記載される複数の動作の１または複数は、１または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、１または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、１または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび／または複数の命令または複数の命令セットに応答して、１または複数のプロセッサコアを含むプロセッサは、本明細書に記載のこれら例示的処理の１または複数の動作を行ってよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび／または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび／または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび／または複数のシステムの任意のものに対し、本明細書に記載の複数のビデオシステムの少なくとも複数の部分を実行させる。
【０２３１】
本明細書に記載の任意の実装で使用されるように、用語「モジュール」は、本明細書で記載の機能を提供するよう構成されたソフトウェアロジック、ファームウェアロジックおよび／またはハードウェアロジックの任意の組み合わせを表現する。ソフトウェアはソフトウェアパッケージ、コードおよび／または命令セットまたは複数の命令として具現化されてよく、「ハードウェア」は本明細書に記載の任意の実装で使用されるように、ハードワイヤード回路、プログラマブル回路、状態機械回路および／またはプログラマブル回路によって実行される複数の命令を格納するファームウェアを、例えば単体でまたはこれら任意の組み合わせにおいて含んでよい。これら複数のモジュールは、例えば集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）等の、より大型のシステムの一部を形成する回路として、集合的にまたは個々に具現化されてよい。例えば、あるモジュールは、本明細書に記載の複数のコーディングシステムに係るソフトウェア、ファームウェア、またはハードウェアを介する実装のためにロジック回路に具現化されてよい。
【０２３２】
図２４は、例示的なビデオコーディングシステム２４００の説明図であり、本開示の少なくとも一部の実装に従って配置されている。図示された実装において、ビデオコーディングシステム２４００は、イメージングデバイス２４０１、ビデオエンコーダ１００、ビデオデコーダ２００（および／またはプロセッシングユニット２４２０のロジック回路２４５０を介して実装されるビデオコーダ）、アンテナ２４０２、１または複数のプロセッサ２４０３、１または複数のメモリ記憶装置２４０４、および／またはディスプレイデバイス２４０５を含んでよい。
【０２３３】
図示の通り、イメージングデバイス２４０１、アンテナ２４０２、プロセッシングユニット２４２０、ロジック回路２３５０、ビデオエンコーダ１００、ビデオデコーダ２００、プロセッサ２４０３、メモリ記憶装置２４０４、および／またはディスプレイデバイス２４０５は、互いに通信できてよい。前述の通り、ビデオエンコーダ１００およびビデオデコーダ２００の両方が図示されているが、様々な例において、ビデオコーディングシステム２４００は、ビデオエンコーダ１００のみ、あるいはビデオデコーダ２００のみを含んでよい。
【０２３４】
図示の通り、いくつかの例において、ビデオコーディングシステム２４００はアンテナ２４０２を含んでよい。アンテナ２４０２は、例えば、ビデオデータのエンコードされたビットストリームを送信または受信するよう構成されてよい。さらに、いくつかの例において、ビデオコーディングシステム２４００はディスプレイデバイス２４０５を含んでよい。ディスプレイデバイス２４０５は、ビデオデータを表示するよう構成されてよい。図示の通り、いくつかの例において、ロジック回路２４５０はプロセッシングユニット２４２０を介して実装されてよい。プロセッシングユニット２４２０は、特定用途向け集積回路（ＡＳＩＣ）ロジック、グラフィクスプロセッサ、汎用プロセッサ等を含んでよい。ビデオコーディングシステム２４００は、オプションのプロセッサ２４０３も含んでよい。オプションのプロセッサ２４０３は同じく、特定用途向け集積回路（ＡＳＩＣ）ロジック、グラフィクスプロセッサ、汎用プロセッサ等を含んでよい。  いくつかの例において、ロジック回路２４５０はハードウェア、ビデオコーディング専用ハードウェア等を介して実装されてよく、プロセッサ２４０３は汎用ソフトウェア、オペレーティングシステム等を介して実装されてよい。また、メモリ記憶装置２４０４は、揮発性メモリ（例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ等）または不揮発性メモリ（例えば、フラッシュメモリ等）などの任意のタイプのメモリであってよい。非限定的な例において、メモリ記憶装置２４０４はキャッシュメモリによって実装されてよい。いくつかの例において、ロジック回路２４５０は、メモリ記憶装置２４０４（例えば、イメージバッファの実装のため）にアクセスしてよい。他の複数の例において、ロジック回路２４５０および／またはプロセッシングユニット２４２０は、イメージバッファ等の実装のために、複数のメモリ記憶装置（例えば、キャッシュ等）を含んでよい。
【０２３５】
いくつかの例において、ロジック回路を介して実装されるビデオエンコーダ１００は、イメージバッファ（プロセッシングユニット２４２０またはメモリ記憶装置２４０４のいずれかを介して）およびグラフィックス処理ユニット（プロセッシングユニット２４２０を介して）を含んでよい。グラフィックス処理ユニットは、イメージバッファに通信可能に連結されてよい。図１に照らし記載された様々なモジュールおよび／または本明細書に記載された他の任意のエンコーダシステムまたはサブシステムを具現化すべく、グラフィックス処理ユニットは、ロジック回路２４５０を介して実装されるビデオエンコーダ１００を含んでよい。例えば、グラフィックス処理ユニットは、コーディングパーティションジェネレータロジック回路、適応変換ロジック回路、コンテンツプレアナライザ、エンコードコントローラロジック回路、適応エントロピーエンコーダロジック回路等を含んでよい。ロジック回路は、本明細書で記載された様々な動作を実行するよう構成されてよい。
【０２３６】
一例において、ビデオエンコーダ１００のグラフィックス処理ユニットは、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得するよう構成されてよい。マルチレベル階層は、複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくはＰ-ピクチャまたはそれら両方を少なくとも備えるベースレベルを備える。また、この階層は、ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベル、および複数の参照フレームとして使用されず、かつ、複数の他のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルを備えてよい。ここにおいて、複数のＰ-ピクチャは、順序に関連して複数の過去のフレームを複数の参照として使用し、また、最大レベル上の複数のピクチャは、複数の過去の参照フレーム、将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。当該方法は、少なくとも１つの現在のフレームの階層レベルに少なくとも依存して、複数のフレームに対する量子化パラメータ（Ｑｐ）を判断することを含んでよい。その場合、各フレームは、フレームが存在するレベルに関連付けられたランクが付与される。
【０２３７】
ビデオデコーダ２００は、ロジック回路２４５０を介して実装されるのと同様の方法で実装され、図２のデコーダ２００に関し前述した様々なモジュールおよび／または本明細書で記載された任意の他のデコーダシステム若しくはサブシステムを具現化してよい。
【０２３８】
いくつかの例において、ビデオコーディングシステム２４００のアンテナ２４０２は、ビデオデータのエンコードされたビットストリームを受信するよう構成されてよい。前述の通り、エンコードされたビットストリームは、フレームデータを保持するイメージバッファを有するコーダと、前述の方法を実行するグラフィックス処理ユニットとに関連付けられたデータを含んでよい。ビデオコーディングシステム２４００は、アンテナ２４０２に連結され、かつ、エンコードされたビットストリームをデコードするよう構成されたビデオデコーダ２００も含んでよい。
【０２３９】
複数の実施形態において、本明細書に記載の複数の特徴は、１または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して、行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、１または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、１または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび／または複数の命令または複数の命令セットに応答して、１または複数のプロセッサコアを含むプロセッサは、本明細書に記載の１または複数の特徴を実行してよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび／または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび／または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび／または複数のシステムの任意のものに対し、本明細書に記載の複数の特徴の少なくとも複数の部分を実行させる。
【０２４０】
図２５は、例示的システム２５００の説明図であり、本開示の少なくとも一部の実装に従って配置されている。様々な実装において、システム２５００は、メディアシステムであってよいが、この文脈に限定されるわけではない。例えば、システム２５００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（スマートフォン、スマートタブレットまたはスマートテレビ等）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、複数のカメラ（複数の自動露出カメラ、複数のスーパーズームカメラ、複数のデジタル一眼レフ（ＤＳＬＲ）カメラ等）に組み込まれてよい。
【０２４１】
様々な実装において、システム２５００はディスプレイ２５２０に連結されたプラットフォーム２５０２を含む。プラットフォーム２５０２は、コンテンツサービスデバイス２５３０またはコンテンツ配信デバイス２５４０または他の複数の同様のコンテンツソース等のコンテンツデバイスからコンテンツを受信してよい。例えば、プラットフォーム２５０２および／またはディスプレイ２５２０と対話すべく、１または複数のナビゲーション機能を含む、ナビゲーションコントローラ２５５０が使用されてよい。これらコンポーネントの各々について、以降に詳述される。
【０２４２】
様々な実装において、プラットフォーム２５０２は、チップセット２５０５、プロセッサ２５１０、メモリ２５１２、アンテナ２５１３、ストレージ２５１４、グラフィックスサブシステム２５１５、複数のアプリケーション２５１６および／または無線２５１８の任意の組み合わせを含んでよい。チップセット２５０５は、プロセッサ２５１０、メモリ２５１２、ストレージ２５１４、グラフィックスサブシステム２５１５、複数のアプリケーション２５１６および／または無線２５１８間の相互通信を提供してよい。例えば、チップセット２５０５は、ストレージ２５１４との相互通信を提供可能なストレージアダプタ（不図示）を含んでよい。
【０２４３】
プロセッサ２５１０は、複合命令セットコンピュータ（ＣＩＳＣ）プロセッサまたは縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、複数のｘ８６命令セット互換プロセッサ、マルチコア、または他の任意の複数のマイクロプロセッサ若しくは中央処理装置（ＣＰＵ）として実装されてよい。様々な実装において、プロセッサ２５１０はデュアルコアプロセッサ、デュアルコアモバイルプロセッサ等であってよい。
【０２４４】
メモリ２５１２は、限定はされないが、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、またはスタティックＲＡＭ（ＳＲＡＭ）等の揮発性メモリデバイスとして実装されてよい。
【０２４５】
ストレージ２５１４は、限定はされないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、接続ストレージデバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（シンクロナスＤＲＡＭ）、および／またはネットワークアクセス可能ストレージデバイス等の不揮発性ストレージデバイスとして実装されてよい。様々な実装において、ストレージ２５１４は例えば複数のハードドライブが含まれる場合に、貴重なデジタルメディアの保護が強化されるよう、ストレージ性能を向上させるテクノロジを含んでよい。
【０２４６】
グラフィックスサブシステム２５１５は、表示のために、スチルまたはビデオ等の複数のイメージの処理を実行してよい。グラフィックスサブシステム２５１５は、例えば、グラフィックス処理ユニット（ＧＰＵ）またはビジュアルプロセッシングユニット（ＶＰＵ）であってよい。グラフィックスサブシステム２５１５およびディスプレイ２５２０を通信可能に連結すべく、アナログまたはデジタルインターフェースが使用されてよい。例えば、インターフェースは、Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ、ＤｉｓｐｌａｙＰｏｒｔ、ワイヤレスＨＤＭＩ（登録商標）、および／またはワイヤレスＨＤに準拠した複数の技術の任意のものであってよい。グラフィックスサブシステム２５１５は、プロセッサ２５１０またはチップセット２５０５に統合されてよい。一部の実装において、グラフィックスサブシステム２５１５は、チップセット２５０５に通信可能に連結されたスタンドアロンのデバイスであってよい。
【０２４７】
本明細書に記載された複数のグラフィックスおよび／またはビデオ処理技術は、様々なハードウェアアーキテクチャに実装されてよい。例えば、グラフィックスおよび／またはビデオ機能は、チップセットと統合されてよい。あるいは、個別のグラフィックスおよび／またはビデオプロセッサが使用されてよい。さらに別の実装において、複数のグラフィックスおよび／またはビデオ機能は、マルチコアプロセッサを含む、汎用プロセッサによって提供されてよい。さらなる複数の実施形態において、これら複数の機能は、コンシューマエレクトロニクスデバイスに実装されてよい。
【０２４８】
無線２５１８は、様々な好適なワイヤレス通信技術を使用して、複数の信号を送信および受信可能な１または複数の無線を含んでよい。そのような複数の技術は、１または複数の無線ネットワークにわたる複数の通信を伴ってよい。例示的な無線ネットワークは（限定はされないが）、複数のワイヤレスローカルエリアネットワーク（ＷＬＡＮ）、複数のワイヤレスパーソナルエリアネットワーク（ＷＰＡＮ）、複数のワイヤレス大都市圏ネットワーク（ＷＭＡＮ）、複数の移動体通信ネットワーク、および複数の衛星ネットワークを含む。そのような複数のネットワークにわたり通信する際、無線２５１８は任意のバージョンの１または複数の適切な規格に従って、動作してよい。
【０２４９】
様々な実装において、ディスプレイ２５２０は任意のテレビタイプのモニタまたはディスプレイを含んでよい。ディスプレイ２５２０は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビ受像機のようなデバイスおよび／またはテレビ受像機を含んでよい。ディスプレイ２５２０は、デジタルおよび／またはアナログであってよい。様々な実装において、ディスプレイ２５２０はホログラフィックディスプレイであってよい。また、ディスプレイ２５２０は、視覚投影を受信可能な透明な表面であってよい。複数のそのような投影は、様々な形態の情報、イメージおよび／またはオブジェクトを伝達してよい。例えば、複数のそのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーションのためのビジュアルオーバレイであってよい。１または複数のソフトウェアアプリケーション２５１６の制御下で、プラットフォーム２５０２はユーザインターフェース２５２２をディスプレイ２５２０に表示してよい。
【０２５０】
様々な実装において、コンテンツサービスデバイス２５３０は、任意の国営、国際的および／または独立のサービスによってホストされてよく、よって、例えばインターネットを介してプラットフォーム２５０２にアクセス可能であってよい。コンテンツサービスデバイス２５３０は、プラットフォーム２５０２および／またはディスプレイ２５２０に連結されてよい。プラットフォーム２５０２および／またはコンテンツサービスデバイス２５３０は、ネットワーク２５６０とメディア情報を通信（例えば、送信および／または受信）すべく、ネットワーク２５６０に連結されてよい。コンテンツ配信デバイス２５４０は、プラットフォーム２５０２および／またはディスプレイ２５２０にも連結されてよい。
【０２５１】
様々な実装において、コンテンツサービスデバイス２５３０は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報および／またはコンテンツを配信可能な複数のインターネット有効化デバイスまたは装置を含んでよい。また、コンテンツサービスデバイス２５３０は、複数のコンテンツプロバイダおよびプラットフォーム２５０２およびディスプレイ２５２０間を、ネットワーク２５６０を介して、あるいは直接に、一方向若しくは双方向に、コンテンツを通信可能な任意の他の同様のデバイスを含んでよい。コンテンツは、システム２５００内の複数のコンポーネントの任意の１つおよびネットワーク２５６０経由のコンテンツプロバイダと、一方向および／または双方向に通信されてよいことが理解される。コンテンツの複数の例は、例えば、ビデオ、音楽、医療およびゲーム情報等を含む、任意のメディア情報を含んでよい。
【０２５２】
コンテンツサービスデバイス２５３０は、メディア情報、デジタル情報、および／または他のコンテンツを含むケーブルテレビプログラム等のコンテンツを受信してよい。複数のコンテンツプロバイダの複数の例は、ケーブル若しくは衛星テレビまたは無線またはインターネットコンテンツプロバイダの任意のものを含んでよい。提供された複数の例は、本開示に従う複数の実装を、いかなる意味においても限定することを意味しない。
【０２５３】
様々な実装において、プラットフォーム２５０２は、１または複数のナビゲーション機能を有するナビゲーションコントローラ２５５０からの複数のコントロール信号を受信してよい。例えば、ユーザインターフェース２５２２と対話すべく、コントローラ２５５０の複数のナビゲーション機能が使用されてよい。様々な実施形態において、ナビゲーションコントローラ２５５０は、ユーザが空間（連続的および多次元）データをコンピュータに入力できるようにする、コンピュータハードウェアコンポーネント（特に、ヒューマンインターフェースデバイス）であり得る、ポインティングデバイスであってよい。複数のグラフィカルユーザインターフェース（ＧＵＩ）等の多くのシステム、および複数のテレビ受像機および複数のモニタは、ユーザが複数の物理的ジェスチャを使用して、コンピュータまたはテレビ受像機に対し、データをコントロールおよびデータの提供をできるようにする。
【０２５４】
コントローラ２５５０のナビゲーション機能の複数の動きについては、ポインタ、カーソル、フォーカスリング、またはディスプレイ上に表示される他の複数の視覚インジケータの複数の動きによって、ディスプレイ（例えば、ディスプレイ２５２０）上でレプリケートされてよい。例えば、複数のソフトウェアアプリケーション２５１６の制御下、ナビゲーションコントローラ２５５０に位置された複数のナビゲーション機能は、ユーザインターフェース２５２２上に表示される、複数の仮想ナビゲーション機能にマッピングされてよい。様々な実施形態において、コントローラ２５５０は、個別のコンポーネントでなく、プラットフォーム２５０２および／またはディスプレイ２５２０に統合されてよい。本開示はしかしながら、上記複数の要素または本明細書で図示または示された文脈に限定されない。
【０２５５】
様々な実装において、複数のドライバ（不図示）は、例えば、機能が有効にされた場合に、テレビ受像機と同様に、初期起動後、ボタンをタッチすることで、複数のユーザがプラットフォーム２５０２を素早くオンおよびオフにすることを可能にするテクノロジを含んでよい。プログラムロジックは、プラットフォームが「オフ」の場合であっても、プラットフォーム２５０２が複数のメディアアダプタ若しくは他のコンテンツサービスデバイス２５３０若しくはコンテンツ配信デバイス２５４０に対し、コンテンツをストリーミングできるようにしてよい。また、チップセット２５０５は、例えば、５．１サラウンドサウンドオーディオおよび／または高精細度７．１サラウンドサウンドオーディオに対応したハードウェアおよび／またはソフトウェアを含んでよい。複数のドライバは、複数の統合されたグラフィックスプラットフォームのためのグラフィックスドライバを含んでよい。様々な実施形態において、グラフィックスドライバは、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）Ｅｘｐｒｅｓｓグラフィックスカードを備えてよい。
【０２５６】
様々な実装において、システム２５００内に示される複数のコンポーネントの１または複数の任意のものは、統合されてよい。例えば、プラットフォーム２５０２およびコンテンツサービスデバイス２５３０は統合されてよく、あるいはプラットフォーム２５０２およびコンテンツ配信デバイス２５４０は統合されてよく、あるいはプラットフォーム２５０２、コンテンツサービスデバイス２５３０、およびコンテンツ配信デバイス２５４０は例えば統合されてよい。様々な実施形態において、プラットフォーム２５０２およびディスプレイ２５２０は統合ユニットであってよい。例えば、ディスプレイ２５２０およびコンテンツサービスデバイス２５３０は統合されてよく、あるいはディスプレイ２５２０およびコンテンツ配信デバイス２５４０は統合されてよい。これらの例は、本開示を限定することを意味しない。
【０２５７】
様々な実施形態において、システム２５００は、無線システム、有線システム、あるいはこれら両方の組み合わせとして実装されてよい。無線システムとして実装される場合、システム２５００は、１または複数のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、コントロールロジックといった無線の共有媒体を介して通信するのに好適な、複数のコンポーネントおよびインターフェースを含んでよい。無線の共有媒体の一例は、ラジオ波スペクトル等の無線スペクトルの複数の部分を含んでよい。有線システムとして実装される場合、システム２５００は、複数の入出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応する有線通信媒体に接続するための複数の物理的コネクタ、ネットワークインターフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等の有線通信媒体を介して通信するのに好適な、複数のコンポーネントおよびインターフェースを含んでよい。有線通信媒体の複数の例は、ワイヤ、ケーブル、複数の金属リード、プリント基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ等を含んでよい。
【０２５８】
プラットフォーム２５０２は、情報を通信するための１または複数の論理的または物理的なチャネルを確立してよい。情報は、メディア情報およびコントロール情報を含んでよい。メディア情報は、ユーザ向けコンテンツを表す任にのデータを指してよい。コンテンツの複数の例は、例えば、音声通話、テレビ会議、ストリーミングビデオ、電子メール（「ｅｍａｉｌ」）メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、イメージ、ビデオ、テキスト等からのデータを含んでよい。音声通話からのデータは、例えば、音声情報、複数の沈黙時間、バックグランドノイズ、コンフォートノイズ、複数のトーン等であってよい。コントロール情報は、自動システム向けの複数のコマンド、複数の命令または複数の制御語を表す任意のデータを指してよい。例えば、システムを介してメディア情報をルーティングすべく、あるいはメディア情報を所定の方法で処理するためのノードを命令すべく、コントロール情報が使用されてよい。複数の実施形態はしかしながら、当該文脈で示された、または図２５に図示された複数の要素に限定されない。
【０２５９】
上記の通り、システム２５００は様々な物理的スタイル若しくは外形情報で具現化されてよい。図２６は、システム２６００が具現化されてよい、小さな外形情報デバイス２６００の複数の実装を示す。様々な実施形態において、例えば、デバイス２６００は、複数の無線機能を有するモバイルコンピューティングデバイスとして実装されてよい。モバイルコンピューティングデバイスは、処理システムと、例えば、１または複数のバッテリ等のモバイル動力源または電源とを有する任意のデバイスを指してよい。
【０２６０】
前述の通り、モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（スマートフォン、スマートタブレットまたはスマートテレビ等）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、複数のカメラ（複数の自動露出カメラ、複数のスーパーズームカメラ、複数のデジタル一眼レフ（ＤＳＬＲ）カメラ等）を含んでよい。
【０２６１】
また、モバイルコンピューティングデバイスの複数の例は、人間によって身に着けられるよう構成された複数のコンピュータを含んでよい。そのようなものとしては、リスト（腕）コンピュータ、フィンガ（指）コンピュータ、リング（指輪）コンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、複数のシュー（靴）コンピュータ、複数のクロージング（衣類）コンピュータ、および他の複数のウェアラブルコンピュータがある。様々な実施形態において、例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーション並びに複数の音声通信および／またはデータ通信を実行可能なスマートフォンとして実装されてよい。一部の実施形態は、例示として、スマートフォンとして実装されたモバイルコンピューティングデバイスに関し記載され得るが、他の複数のワイヤレスモバイルコンピューティングデバイスを使用して、他の複数の実施形態が実装できることも理解され得る。複数の実施形態はこの文脈に限定されない。
【０２６２】
図２６に図示の通り、デバイス２６００は、ハウジング２６０２、ユーザインターフェース２６１０を含み得るディスプレイ２６０４、入／出力（Ｉ／Ｏ）デバイス２６０６、およびアンテナ２６０８を含んでよい。デバイス２６００は、複数のナビゲーション機能２６１２も含んでよい。ディスプレイ２６０４は、モバイルコンピューティングデバイスに適切な情報を表示するための任意の好適なディスプレイユニットを含んでよい。Ｉ／Ｏデバイス２６０６は、モバイルコンピューティングデバイスに情報を入力するための任意の好適なＩ／Ｏデバイスを含んでよい。Ｉ／Ｏデバイス２６０６の複数の例は、英数字キーボード、テンキーパッド、タッチパッド、複数の入力キー、複数のボタン、複数のスイッチ、複数のロッカスイッチ、複数のマイク、複数のスピーカ、音声認識デバイスおよびソフトウェア等を含んでよい。情報は、マイク（不図示）を介してデバイス２６００に入力されてもよい。そのような情報は、音声認識デバイス（不図示）によってデジタル化されてよい。複数の実施形態は、この文脈に限定されない。
【０２６３】
本明細書のこれら例示的処理の実装は、示される複数の動作を図示された順番で含んでよい一方で、本開示はこの点において限定されず、様々な例において、本明細書のこれら例示的処理の実装は、示された複数の動作のサブセットのみのタスクを、および／または図示されたものとは異なる順番において含んでよい。
【０２６４】
また、本明細書で記載される複数の動作の１または複数は、１または複数のコンピュータプログラムプロダクトによって提供される複数の命令に応答して行われてよい。そのような複数のプログラムプロダクトは、例えばプロセッサによる実行時、本明細書に記載の機能を提供できる複数の命令を、提供する信号搬送媒体を含んでよい。複数のコンピュータプログラムプロダクトは、１または複数の機械可読媒体の任意の形態で提供されてよい。よって、例えば、１または複数の機械可読媒体によってプロセッサに伝達される、プログラムコードおよび／または複数の命令または複数の命令セットに応答して、１または複数のプロセッサコアを含むプロセッサは、本明細書に記載のこれら例示的処理の１または複数の動作を行ってよい。概して、機械可読媒体はソフトウェアをプログラムコードおよび／または複数の命令若しくは複数の命令セットの形態で伝達してよい。プログラムコードおよび／または複数の命令若しくは複数の命令セットは、本明細書に記載の複数のデバイスおよび／または複数のシステムの任意のものに対し、本明細書に記載の複数のビデオシステムの少なくとも複数の部分を実行させる。
【０２６５】
本明細書に記載の任意の実装で使用されるように、用語「モジュール」は、本明細書で記載の機能を提供するよう構成されたソフトウェアロジック、ファームウェアロジックおよび／またはハードウェアロジックの任意の組み合わせを表現する。ソフトウェアはソフトウェアパッケージ、コードおよび／または命令セットまたは複数の命令として具現化されてよく、「ハードウェア」は本明細書に記載の任意の実装で使用されるように、ハードワイヤード回路、プログラマブル回路、状態機械回路および／またはプログラマブル回路によって実行される複数の命令を格納するファームウェアを、例えば、単体でまたはこれら任意の組み合わせにおいて含んでよい。これら複数のモジュールは、例えば集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）等の、より大型のシステムの一部を形成する回路として、集合的にまたは個々に具現化されてよい。例えば、あるモジュールは、本明細書に記載の複数のコーディングシステムに係るソフトウェア、ファームウェア、またはハードウェアを介する実装のためにロジック回路に具現化されてよい。
【０２６６】
様々な実装は、複数のハードウェア要素、複数のソフトウェア要素、あるいはこれら両方の組み合わせを使用して実装されてよい。複数のハードウェア要素の複数の例は、複数のプロセッサ、複数のマイクロプロセッサ、複数の回路、複数の回路要素（例えば、複数のトランジスタ、複数のレジスタ、複数のコンデンサ、複数のインダクタ等）、複数の集積回路、複数の特定用途向け集積回路（ＡＳＩＣ）、複数のプログラマブルロジックデバイス（ＰＬＤ）、複数のデジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複数のロジックゲート、複数のレジスタ、半導体デバイス、複数のチップ、複数のマイクロチップ、複数のチップセット等を含んでよい。ソフトウェアの複数の例は、複数のソフトウェアコンポーネント、複数のプログラム、複数のアプリケーション、複数のコンピュータプログラム、複数のアプリケーションプログラム、複数のシステムプログラム、複数の機械プログラム、オペレーティングシステムソフトウェア、ミドルウェアモジュール、ファームウェアモジュール、ソフトウェアモジュール、複数のルーチン、複数のサブルーチン、複数の機能、複数の方法、複数のプロシージャ、複数のソフトウェアインターフェース、複数のアプリケーションプログラミングインターフェース（ＡＰＩ）、複数の命令セット、コンピューテイングコード、コンピュータコード、複数のコードセグメント、複数のコンピュータコードセグメント、複数の語、複数の値、複数の記号、あるいはこれら任意の組み合わせを含んでよい。実施形態を複数のハードウェア要素および／または複数のソフトウェア要素を使用して実装するかどうかの判断は、任意の数の要因に従って変わってよい。例えば、所望の計算速度、複数の能力レベル、複数の熱耐性、処理サイクル予算、複数の入力データレート、複数の出力データレート、複数のメモリリソース、複数のデータバス速度および他の複数の設計若しくは性能制約といったものである。
【０２６７】
少なくとも１実装に係る１または複数の態様は、機械可読媒体上に格納された、複数の記述命令によって実装されてよい。機械可読媒体は、プロセッサ内の様々なロジックを表現し、機械可読媒体は機械により読み取られると、機械に対し、本明細書に記載された複数の技術を実行するようロジックを組み立てさせる。複数の「ＩＰコア」として知られる、そのような複数の記述表現は、有形の機械可読媒体に格納されてよく、様々な顧客若しくは製造施設に対し供給され、実際にロジックまたはプロセッサを作成する複数の製造機械にロードされてよい。
【０２６８】
本明細書に記載された具体的な特徴セットは、様々な実装に照らし記載されている一方で、この記載は、限定的意味に解釈されることを意図されていない。従って、本明細書に記載された実装の様々な修正、並びに本開示の属する技術分野における当業者にとって自明な他の複数の実装は、本開示の精神および範囲内に属するものとみなされる。
【０２６９】
以下の複数の例は、さらなる複数の実装に関する。
【０２７０】
一実装として、コンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のＰ-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。上記方法はまた、少なくとも１つの現在のフレームの階層のレベルに少なくとも依存して、複数の上記フレームに対する量子化パラメータ（Ｑｐ）を判断する段階を備え、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与される。
【０２７１】
別の実装として、上記方法はまた、少なくともはじめに、上記フレームの上記レベルが上記ベースレベルに近いほど、上記複数のフレームのためのより小さい量子化パラメータを提供する段階を備え、少なくともはじめに、すべての上記他の複数のレベルと比較して、上記複数のフレームのための最小の量子化パラメータを上記ベースレベルに提供する段階を備え、Ｑｐと、ターゲットビットレート毎の複数の将来のフレームの複数の利用可能な複雑度のうち平均時間的複雑度の値との間の所定の関係から、少なくとも上記ランク（０）のＰ‐ピクチャの初期のＱｐを形成する段階を備え、上記ランク（０）の非Ｐ‐ピクチャの複数のフレームの上記Ｑｐを形成すべく、少なくとも上記Ｐ‐ピクチャのランク（０）の複数のフレームの上記初期のＱｐを使用する段階を備え、フレームのためのランク（０）の非Ｐ‐ピクチャのＱｐ値を形成すべく、Ｐ‐ピクチャのランク（０）のＱｐ値の、ランク（０）の非Ｐ‐ピクチャのＱｐ値に対する所定のマッピングを使用する段階を備える。
【０２７２】
上記方法は、各非ゼロレベルのための固定初期フレームＱｐを判断する段階を備え、非ゼロレベル上のフレームのタイプに関わらず、上記固定初期フレームＱｐが、上記非ゼロレベル上のすべてのフレームに対して確立され、ランク（０）以外の複数のフレームのＱｐを、以下の式から判断する段階を備え、Qpr = inter_q[0] + ((fpic_q[0] - inter_q[0]) + (1.0/2.0)) x r
inter_q[0]は、上記ランク（０）の複数のＰ‐ピクチャのための初期のＱｐで、fpic_qは、上記ランク（０）の複数のＦ‐ピクチャのために使用される上記初期のＱｐで、かつ、rは分析されている現在のフレームの上記ランクであり、オプションとして、複数の制限値をＱｐ値に適用する段階を備えており、上記複数の制限値は、（１）シーケンスの開始における複数のフレームに対する、ビットレート、フレームレート、およびフレームの幅×高さに基づく、時空複雑度とピクセル毎のビット数（ｂｐｐ）との間の関係に関連付けられた複数の所定値から導き出される複数の制限値、（２）シーケンスの開始における複数のフレーム以外の複数のフレームに対する、分析されているフレームと同一のシーケンスの既にエンコードされた複数のフレームからのデータを含む履歴に少なくとも部分的に基づく、複数の上記フレームのための複数の制限値、（３）複数のＱｐ制限値を判断するために使用される中間Ｑｐとしてこれまでにエンコードされた複数の上記フレームの平均Ｐｑｐを設定する段階の少なくとも１つから導き出され、（２）において、これまでにエンコードされた複数の上記フレームの（１）中間Ｑｐは、(avg_pqp)これまでにエンコードされたすべての上記フレームの複数の上記平均Ｐｑｐ、(avg_cplx)平均時空複雑度、(act_bits)これまでにエンコードされたすべての上記フレームに使用される全ビット数、(cplx)上記現在のフレームの複雑度、および(target_bits)上記現在のフレームを含む、すべての上記フレームのための全ターゲットビット数に基づいており、上記履歴のオプション（２）は、結果的に得られる上記中間Ｑｐが上記平均Ｐｑｐの特定の割合の範囲内であるときに使用され、（３）において、Ｐｑｐは上記Ｐ‐ピクチャのランク（０）のＱｐであり、上記フレームがシーケンスの開始に存在するか、空白または静的シーンの一部であるか、あるいはそれらのいずれでもないかによって、初期のＱｐに対して、より最終的なフレームＱｐを別に判断する段階を備え、上記フレームの上記ランクに少なくとも部分的に基づいて、初期のＱｐに対して、より最終的なフレームＱｐを判断する段階を備え、上記初期のＰ‐ピクチャのランク（０）のＱｐと、Ｉ‐ピクチャ対Ｐ‐ピクチャのビット率との間の所定の関係に少なくとも部分的に基づいて、Ｐ‐ピクチャのための推定されるビット数の値（P_est_bits）を、確立する段階を備え、Ｆ‐ピクチャのための推定されるビット数の値（F_est_bits）を、初期のＰ‐ピクチャのランク（０）のＱｐと、Ｐ‐ピクチャ対Ｆ‐ピクチャのビット率との間の所定の関係に基づいて、確立する段階を備え、上記Ｆ‐ピクチャのために、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される、モーフィング技術または合成技術によって修正される、修正された複数の参照フレームをＦ‐ピクチャに提供する上記オプションを提供する段階を備え、フレームのビット数の推定は、線形モデルを用いて計算され、上記フレームのフレームタイプとレベルとの複数の異なる組み合わせに対して異なり、複数の上記フレームタイプは、少なくともＰ‐ピクチャ、Ｆ‐ピクチャ、Ｂ‐ピクチャ、またはＩ‐ピクチャを含む。
【０２７３】
上記方法はまた、バッファのビット容量に対する、上記バッファの中間動作ポイントに対するバッファ充填量を維持すべく、より最終的なフレームＱｐを判断する段階を備え、上記バッファは、デコーダにおけるバッファの複数のパラメータを模倣する、エンコーダにおける仮想バッファであり、バッファのバッファ充填量に応答する、フレームのためのより最終的なＱｐを判断する段階であって、レベル応答型の複数のＱｐモデルで、上記フレームのビット数を推定する段階と、ビデオバッファ検証（ＶＢＶ）デルタを適用するかどうかを判断する段階と、上記フレームの複雑度に対応する重み付け係数に関連付けられ、かつ、バッファインクリメントに関連付けられた複雑度デルタを計算する段階と、閾値が超えられると、上記ＶＢＶデルタによって調整される上記初期のＱｐおよび上記複雑度デルタに少なくとも部分的に基づいて、上記より最終的なＱｐを判断する段階とを含み、上記ＶＢＶデルタは、バッファステータスに関連付けられており、バッファの中間動作Ｑｐに対し初期のＱｐを調整すべく適用されており、かつ、（ａ）上記バッファインクリメントのレートが閾値を超えているかどうか、（ｂ）上記バッファの充填量のバッファ推定が閾値を超えているかどうかの少なくとも１つに依存して適用されており、上記バッファインクリメントは、フレームシーケンスのための平均ビットバッファレベルに対する上記ビット数の値であり、かつ上記フレームのビット数を推定する段階に基づいており、上記バッファ推定はバッファ充填量値と上記バッファインクリメントの値とに関連付けられている段階を備え、上記初期のＱｐは、ランク（０）のＰ‐ピクチャのＱｐであり、少なくとも以下の（Ａ）および（Ｂ）の１つを含んでおり、（Ａ）ルックアヘッドを備える単一パスの分析を実行する段階であって、現在のフレームに対する、複数の将来のフレームである多数のルックアヘッドフレームを事前分析する段階に少なくとも部分的に依存して、上記現在のフレームのためのより最終的なＱｐを形成する段階を備え、上記事前分析する段階は、複数の上記ルックアヘッドフレームを完全にエンコードせずに、複数の上記ルックアヘッドフレームの複数の上記複雑度および動き特性を判断する段階を含む、デルタ値でより初期のＱｐを調整する段階に少なくとも部分的に基づいて、より最終的なＱｐを判断する段階を備え、上記調整する段階は、デルタ値を（１）複雑度デルタ、および（２）バッファの充填量に関連付けられたビデオバッファ検証（ＶＢＶ）デルタを用いて判断する段階を含み、上記複雑度デルタは、分析されている上記現在のフレームを有し、上記複数のルックアヘッドフレームを含むシーケンスの複雑度に関連付けられ、かつ、適応量子化によって形成されており、上記適応量子化は、Ｉ‐ピクチャに対するフレームの全ビット量と、上記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの上記フレームの全ビット量とを変更することで、複数のビットをシフトすることによるキーフレームブースティングと、フレームの全ビット量を変更することで、複数のより複雑なフレームから複数のより複雑でないフレームへ、複数のビットを移し替える段階を含む時間的複雑度マスキングと、複数の連続するフレームの複数のデルタ値のデルタＱｐ係数スムージングとの少なくとも１つを含むルックアヘッドを備える単一パスの分析を実行する段階と、（Ｂ）２パスの分析を実行する段階であって、使用された上記ビット数および分析された複数の上記フレームの複雑度を取得すべく、上記初期のＱｐの複数の値を使用することによって、シーケンスの複数のフレームをエンコードする、第１のパス分析を実行する段階と、上記シーケンスの複数の上記フレームを保持するバッファの中間動作ポイントに対応する中間動作ポイントＱｐ近傍に、Ｑｐを維持すべく、デルタ値によって上記初期のＱｐを調整することによって、上記シーケンスの複数の上記フレームのためのより最終的なフレームＱｐを判断すべく、第２のパス分析を実行する段階とを備え、上記デルタ値は、バッファの上記充填量ステータスおよび分析されている上記フレームシーケンスの上記複雑度に関連付けられている２パスの分析を実行する段階を備える。
【０２７４】
別のアプローチとして、ビデオコーディングのためのルックアヘッドを備える１パスレートコントロールのためのコンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のＰ-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。上記方法はまた、現在のフレームの階層のレベルに少なくとも依存して、複数の上記フレームに対する初期の量子化パラメータ（Ｑｐ）を判断する段階であって、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与される段階と、現在のフレームに対する、複数の将来のフレームであり、かつ、複数の上記ルックアヘッドフレームを完全にエンコードせずに、複数の上記ルックアヘッドフレームの複雑度または動きあるいはそれら両方の複数の特性を判断すべく、分析された、多数のルックアヘッドフレームを事前分析する段階と、上記現在のフレームの上記初期のＱｐを調整すべく、複数の上記ルックアヘッドフレームの分析の複数の結果を使用することにより、より最終的なＱｐを判断する段階とを備える。
【０２７５】
そのような方法はまた、デコーダにおけるバッファの動作を模倣するバッファのバッファステータスを判断する段階に少なくとも部分的に基づいて、より最終的なＱｐを判断する段階を備え、上記バッファは、上記ルックアヘッドの複数の将来のフレームのためのスペースを含み、バッファステータスを判断する上記段階は、上記バッファの中間動作ポイントに対応するターゲットの中間動作ポイントＱｐに近づけるべく、複数のフレームのための現在のＱｐを変調する段階を含み、上記より最終的なＱｐを判断する段階は、上記バッファの上記充填量ステータスに関連付けられたビデオバッファ検証デルタと、分析されている、上記現在のフレームおよび複数の上記ルックアヘッドフレームを含む上記フレームシーケンスの上記複雑度に関連付けられた複雑度デルタとの、少なくとも１つによって部分的に形成されたデルタ値による、初期のＱｐを調整する段階を含み、上記複雑度デルタは、適応量子化を実行する段階、および上記フレームシーケンスの平均複雑度を使用する段階によって形成され、上記適応量子化は、複数のより複雑でないフレームから複数のより複雑なフレームへ複数のビットを移し替える時間的複雑度マスキングを含み、上記フレームシーケンスの平均複雑度は、複数の上記ルックアヘッドフレームの複数の上記複雑度を含み、上記複雑度デルタは、適応量子化を実行する段階によって形成され、上記適応量子化は、低い複雑度の複数のフレームシーケンスにおいて、Ｉ‐ピクチャに対する、かつ、上記Ｉ‐ピクチャを参照として使用する、同一シーケンス内の複数のＩ‐ピクチャ以外のものからの、複数のビットをシフトすることによるキーフレームブースティングを含み、上記フレームシーケンスは、複数の上記ルックアヘッドフレームの複数の上記複雑度を少なくとも部分的に使用することによって、低い複雑度であると判断され、ＶＢＶデルタ後の結果的に得られるＱｐが適用され、バッファの充填量ステータスに関連付けられており、上記複雑度デルタを適用することによって、上記結果的に得られるＱｐを調整する、上記より最終的なＱｐを判断する段階は、適応量子化を実行することによって初期のＱｐを調整する段階と、複数の連続するフレーム間のＱｐの変化を制限するためのＶＢＶのＱｐ係数スムージングと複数の連続するフレームの複雑度デルタの複数の値とに少なくとも部分的により、かつ、複数の上記フレームの上記タイプとランクの組み合わせに依存して、デルタを形成する段階とを含んでおり、上記適応量子化は、上記初期のＱｐを調整するための上記デルタを形成することを含む。
【０２７６】
さらなる別の実装として、ビデオコーディングのための２パスレートコントロールのためのコンピュータ実装方法は、入力ビデオ順序で、かつ、マルチレベル階層に関連付けられた状態でピクセルデータの複数のフレームを取得する段階を備え、上記マルチレベル階層は、複数の参照フレームとして使用される、複数のＩ‐ピクチャ若しくは複数のＰ-ピクチャまたはそれら両方を少なくとも備えるベースレベルと、上記ベースレベル上の複数のフレームを複数の参照として使用する複数のピクチャを備える少なくとも１つの中間レベルと、複数の参照フレームとして使用されず、かつ、他の複数のレベルの複数のフレームを複数の参照として使用する複数のピクチャを備える最大レベルとを含み、複数のＰ-ピクチャは、上記順序に関連して複数の過去のフレームを複数の参照として使用し、上記最大レベル上の複数のピクチャは、複数の過去の参照フレーム、複数の将来の参照フレーム、あるいはそれら両方を使用するオプションが提供される。
【０２７７】
上記方法はまた、分析される各フレームのための初期の既定の量子化パラメータ（Ｑｐ）を用いて第１のパス分析を実行する段階と、個々の複数のフレームおよびコーディングのための、より最終的な量子化パラメータ（Ｑｐ）を判断する段階を含む第２のパス分析を実行する段階と、コーディングに使用されるフレームのためのターゲットＱｐ、および上記第１のパス分析の複数の統計を更新するためのフレームのためのターゲットビット数を判断する段階とを備え、上記第１のパス分析を実行する段階において、複数の初期の既定のＱｐは、現在のフレームの階層のレベルに少なくとも部分的に基づいて確立され、各フレームは上記フレームが存在する上記レベルに関連付けられたランクが付与されており、かつ、上記第１のパス分析を実行する段階は、分析される複数の上記フレームのための複雑度およびビット数を判断するのに十分なように複数の上記フレームをエンコーディングする段階を含み、上記第２のパス分析を実行する段階は、１または複数のフレームの品質を強化すべく、適応量子化を実行する段階を含み、上記適応量子化を実行する段階は、同一のシーケンス内の少なくとも１つの他のフレームのためのビット量を減少させつつ、少なくとも１つのフレームのための全ビット量を増加させることによって複数のビットをシフトすることを含む。
【０２７８】
上記方法はまた、上記第１のパス分析は、上記シーケンス内のすべての上記フレームをエンコードし、複雑度、ビットレート、およびＱｐの間の所定の関係を使用することによって、上記初期の既定のランク（０）のＰ‐ピクチャが形成され、フレーム毎のターゲットビット数に一致させるべく、複数の上記フレームをスケーリングする段階を備え、上記適応量子化を実行する段階は、Ｉ‐フレームに対する、かつ、上記Ｉ‐フレームを参照として使用する複数の上記フレームからの、複数のビットをシフトすることを含むキーフレームブースティングを含み、上記適応量子化を実行する段階は、シーケンス内の複数のより複雑なフレームから、複数のより複雑でないフレームへ移し替えることを含み、かつ、同一タイプおよびランクのフレームの複数の組み合わせに依存する、時間的複雑度マスキングを含み、スケーリングする段階および上記適応量子化は、ターゲットビットフレームサイズをもたらし、上記方法は、上記第１のパス分析および上記ターゲットビットフレームサイズ（tgt_size）において判断された、上記フレームの上記ビット数およびＱｐに依存して、フレームのコーディングのための推定される最終的なＱｐを判断する段階を備え、上記適応量子化を実行する段階は、デルタＱｐ係数を形成し、かつ、複数の連続するフレーム間のＱｐの変化を制限するための複数の連続するフレームのＱｐ係数スムージングを含み、かつ、複数の上記フレームのタイプとランクの組み合わせに依存し、分析されている上記フレームの上記フレームランクおよびタイプを考慮する反復を使用することによって、より最終的なＱｐを判断する段階を備え、上記反復は、適応量子化の上記デルタＱｐ係数も考慮し、上記反復は、上記第１のパス分析からのフレーム毎の上記ビット数およびＱｐも考慮し、上記反復は、段階値に基づき、テストＱｐ値を設定する段階と、選択されたフレームのための予想される全ビット数を計算する段階と、上記予想される全ビット数を、閾値としてのターゲットビット数の値と比較する段階と、上記閾値が超えられているかどうかによって、上記テストＱｐ値を別に変更する段階と、テストＱｐを有限回数に設定することで、処理を再開する段階とを含み、上記予想される全ビット数は、分析されている上記フレームのフレームランクおよびタイプ、適応量子化のデルタＱｐ係数、および上記第１のパス分析からのフレーム毎のビット数およびＱｐに少なくとも部分的に基づいていることも含む。
【０２７９】
さらなる例において、少なくとも１つの機械可読媒体は、コンピューティングデバイス上での実行に応答して、上記コンピューティングデバイスに対し、上記複数の例のいずれかに従った方法を実行させる、複数の命令を含んでよい。
【０２８０】
さらなる例において、装置は上記複数の例のいずれかに従った複数の方法を実行させるための手段を含んでよい。
【０２８１】
上記複数の例は、複数の特徴の特定の組み合わせを含んでよい。しかしながら、上記複数の例は、この点に限定されず、様々な実装において、上記複数の例は、そのような複数の特徴のサブセットのみ、そのような複数の特徴の異なる順序、そのような複数の特徴の異なる組み合わせ、および／または明示的に列挙されたこれら特徴と異なる複数の追加的特徴を実行することを含んでよい。例えば、例示的方法に関し記載されたすべての特徴は、例示的装置、複数の例示的システム、および／または複数の例示的物品に対し実装されてよく、およびそれらの逆であってよい。
【図１】
0006286718.tif 000125
【図２】
0006286718.tif 000126
【図３Ａ】
0006286718.tif 000127
【図３Ｂ】
0006286718.tif 000128
【図４】
0006286718.tif 000129
【図５】
0006286718.tif 000130
【図６】
0006286718.tif 000131
【図７】
0006286718.tif 000132
【図８】
0006286718.tif 000133
【図９】
0006286718.tif 000134
【図１０】
0006286718.tif 000135
【図１１】
0006286718.tif 000136
【図１２】
0006286718.tif 000137
【図１３】
0006286718.tif 000138
【図１４】
0006286718.tif 000139
【図１５】
0006286718.tif 000140
【図１６】
0006286718.tif 000141
【図１７】
0006286718.tif 000142
【図１８】
0006286718.tif 000143
【図１９】
0006286718.tif 000144
【図２０】
0006286718.tif 000145
【図２１】
0006286718.tif 000146
【図２２Ａ】
0006286718.tif 000147
【図２２Ｂ】
0006286718.tif 000148
【図２３】
0006286718.tif 000149
【図２４】
0006286718.tif 000150
【図２５】
0006286718.tif 000151
【図２６】
0006286718.tif 000152