連鎖のひとつの段 — 何が入り、何が出て、後段で何が壊れるか
この段はエンコード処理のどこに位置するか
動画エンコーダは単一のアルゴリズムではなく、順序の決まった 8 つの段です。その順序は恣意的ではありません。どの段も、直前の段が仕事を可能にしてくれたからこそ存在します。このツールはそのうちの 1 つを扱います。下の連鎖から残りの 7 つに移動できます。
レート制御シミュレーター — ビットレート目標か画質目標のどちらかに当てるため、フレームごとに量子化器を選ぶ
レート制御は段ではなくループです。2 つの隣の間で一度動くのではなく、第 05 段の量子化を取り囲んで調整し続けます。
- 入ってくるもの
- すでに符号化したフレームの実測ビット量と、当てるべき目標。
- 出ていくもの
- 次フレームの量子化器設定。第 05 段に返されます。
- 次の段が前提とすること
- 量子化を変えてよいことを前提にします。だから後に続くのではなく、その段を取り囲みます。
- ここで壊れるもの
- 画質とビットレートを同時に一定に保つことはできません。CRF は画質を固定し、複雑な場面ではビットレートを上げます。CBR はビットレートを固定し、そこでは画質を落ちるに任せます。どちらかを選ぶことは、どちらが動いてよいかを選ぶことです。
全プロセスの詳細解説
-
4フレームのバッファから導出されるCBRの最悪フレームのスコア60 6 ステップ
アクションシーン、CRF 23、4フレームのバッファ。CBR の最も低いフレーム品質は、このモデルが許可する最大値 85 のうち 60 と評価される。ルールはすべてページ上に示されている。CRF は各フレームの複雑さに比例したビットを割り当て、CBR は一律 2000 ビットを支払った上で 4 フレーム分を保持するバッファから補充を行い、CBR の品質は供給量を需要量で割った値の平方根の 85 倍となる。この 60 を導出せよ。
-
CRF の割り当てはシーンの平均複雑さを基準に記述されているため、その平均をとると直ちに平均値へと戻る。シーンや CRF の値が何であれ、平均は目標値である 2000 ビットになる。その表示値は測定値ではなく定義である。
-
情報を与えてくれるのはピーク値である。2000 に対する 4078 という数値は、最も負荷の高いフレームが平均複雑さの 2.039 倍であることを示している。生成器は複雑さの上限を 0.95 に制限しているため、このシーンの平均複雑さは 0.466 でなければならない。
-
CBR も同じ曲線に直面する。フレームごとの需要量は CRF 割り当てと同じ式で表されるため、CRF が 4078 ビットを支払うフレームは、CBR も 4078 ビットを要求されるものの 2000 ビットしか受け取れないフレームとなる。
-
それを補うのがバッファの役割である。満たされた状態では 8000 ビットを保持し、供給量を 5040 まで引き上げる。これは最も厳しいフレームが求める 4078 を余裕で上回る。満杯のバッファはピークを完全に隠し、品質が 85 から低下することはない。
-
実際には品質は 85 から低下するため、バッファが満杯であるはずがない。代わりにバッファを空と仮定する。供給量はわずか 2000 であり、比率は 0.4904、その平方根は 0.7003 となり、これに 85 を掛けた値は 59.5 となる。パネルはこれを四捨五入して 60 と表示する。表示された最小値は、バッファが空のときの下限値と正確に一致する。
-
バッファは、需要が割り当てを超えた分だけ枯渇していく。ピークフレームではそれが 2078 ビットとなる。8000 ビットのバッファは、これの 3.85 フレーム分に相当する。このシーンの負荷の高い区間は 40 フレーム続く。
解答
60 という数値はバッファのサイズ設定の誤りではなく、バッファが底を突いたことを意味する。バッファサイズは品質ではなく時間に変換される。バッファの蓄積量をフレームあたりの不足分で割ると、カバーできるフレーム数が得られる。バーストがビット数ではなくバッファのフレーム数で測定されるのはそのためである。長さ 40 フレームのバーストを隠すには、バースト 1 フレームあたり約 1.04 フレーム分のバッファが必要となり、全体で約 40 フレーム分を要するが、スライダーは 10 で停止する。これこそが可変ビットレートが必要とされる理由の一行要約である。CRF はバーストを隠す必要はなく、単にその分のコストを支払えばよい。
-
-
1フレームあたり2000ビットにおけるCRFとCBRの10.8ポイントの差 5 ステップ
どちらのモードもこのシーンでフレームあたり同じ 2000 ビットを費やす。CRF の品質ラインは 89.8 に位置し、CBR の平均は 79 である。この 10.8 ポイントの差が何によってもたらされているか、そしてそれが CRF のステップ数でどれほどのコストに相当するかを導出せよ。
-
CRF のスコアはスライダーのみから定まる。CRF 18 から CRF 40 までの 22 ステップにわたって 45 ポイントが割り振られている。CRF 23 は 5 ステップ下であるため、89.8 となる。
-
したがって、スケール上のどこであれ 1 ステップは 2.045 ポイントに相当する。このモデルは CRF 品質を線形にしており、これにより後で差をステップ数に換算することが可能となる。
-
ビットレートは単に似ているだけでなく、完全に同一である。CRF は構造上目標値を平均し、CBR はすべての単一フレームで目標値を支払うため、両者とも 120 フレーム全体で 240,000 ビットを生成する。
-
したがって、89.8 と 79 の間の 10.8 ポイントの差にビットレートの違いは一切存在しない。同じビット数、同じファイルサイズでありながら、10.8 ポイント離れている。
-
この差は 2 つに分かれる。CBR は容易にクリアできるフレームであっても 85 に制限されており、これが CRF の 89.8 に対して 4.8 ポイントの損失となる。そして残りの 6.0 ポイントは、バッファに余裕がなくなったフレームで失われる。
解答
固定ビットレートではここで 10.8 品質ポイントが犠牲になっており、それを買い戻すには 5.28 CRF ステップを要する。その引き換えに CBR が得るものはピークの制御である。CBR の最大フレームは平均と正確に同じ 2000 ビットであるが、CRF の最大フレームは 4078 ビットに達する。フレームあたり 2000 ビットしか送れない回線では、CRF のピークフレームは遅れて到着し、その 89.8 というスコアには何の価値もなくなる。これこそが 10.8 の損失を受け入れる唯一の理由である。ステップ 3 が除外した内容にも注目されたい。割り当て式には CRF の項が一切含まれていないため、CRF を 28 に進めてもスコアが低下するだけでビットレートは 2000 のままである。このページが示しているのは、ビットがどこへ配分されるかであり、ある品質レベルを得るためにいくらのコストがかかるかではない。
-
参考文献 (1)
- The framework every encoder’s rate control is an approximation of: G. J. Sullivan & T. Wiegand, "Rate-distortion optimization for video compression." IEEE Signal Processing Magazine 15(6), 74–90, 1998.