2023年10月06日

【BDアニメ】AVCエンコード(1080p)には難所が二つある件

↓1)記稿.2023/10/06

> 基本的にAVCは、HEVCに比べるとパン処理が弱い
> 構造物表現が細かくなるほどにビットレートを持って行かれて
> カクカクしがちに成りやすいそれをどうにかするには、どうしたってGOPを伸ばすほかない


 一般にGOPの最大値を、キーフレーム間隔(rc_lookahead)と呼ぶが
 それは、シーン変更感度(scenecut)の値を(40)の固定とする

 { rc_lookahead=23,scenecut=40 }‥デフォルト

 この場合、場面変更を検知せずとも問答無用で1秒に区切られる
 デフォルト値の40には、場面検知よりも秒刻みの方を優先した意味も込められている

 ‥構成できるマクロブロックには制限がある
 Iフレームには、よりブロックを詳細に集中させないと品質は上がらない
 ビットレートばかり上げても、その辺で、Iフレーム品質は頭打ちするのだ

 さらに、この手の場面切換想定は、20世紀映像の想定だ
 (21世紀映像に見られる様なデジタル時代ゆえの場面切り替えの早い想定をしていない)
 なので、本質的な意味において「シーン変更感度」とした呼称にはやや語弊を含む
 (シーン変更感度とした本来の意味でなら(89)がオススメだ)


 ‥その動画エンコードの通常概念として
 1秒ごとのマクロブロックの最大数が、レベル概念を通して決められている

 つまり、圧縮率を高めるには、その壁を超えてやるルール採用が必要になる
 それがつまり、参照フレームMix(mixed_ref)だ

 但し、この参照フレームMixの挙動には注意が必要だ

 一般には、エンコードの都度の都合があるので、IDRとした特別なIフレームが用意される
 (IDRフレームより前にあるブロックを参照しないとした区切りルールだ)
 (オープンGOPでは定期枚数に発生するが、参照フレームMixでは必ずしもそうとは限らない‥謎)


> とにもかくにも、それの壁超え最大可能延長フレーム数についての余幅言及を聞いた例しがない


 ‥それの予想としては、いくつか考えられる
 一つは、理論上のpフレームの最大参照枚数×bフレーム数の最大数だろうと思うにせよ
 実質的には、BD品質とした参照フレーム(4)と、美麗とされるbフレーム(3)の都合がある

 すると‥13枚を基本的な長さに見立て、それの3倍程度とした所だろう
 あまりに遠くから拾っても、マクロブロックの型が噛み合うものではない(アニメなら尚更だ)

 (まぁ要するに2秒以内がBD品質でのスタンダードな想定に思われる)


> なので、GOPを伸ばすにしても2秒としたキーフレーム間隔の延長が手頃になる
> rc_lookahead=47,mixed_ref=1


 ※ だが当然として、エンコードの際に「先読み」の枚数を増やしておかないのでは話にならない
 簡潔にデフォルトの2倍ぐらいに思ってるんだろうが‥実質的には
 作品タイトル毎のパンの最大長を満たしていないのではお話にならない
 アクション実写映画なんかだと、諸々2秒に収まらないパン・シーンなんざいくらでもあるだろう
 そういう想定ともなると実に悩ましくなるものだ

 (だがしかし、先読みをべらぼうに伸ばすだけでカク付き解消してしまうケースも有るはずだ)
 (もっとも、十分なビットレート量こそ第一条件である)


> ところが、これで良いと思っていると足元を掬われる要素に悩まされる事になる



1-1)1

> それが今やアニメで当然の様に採用される光表現のキラキラやチラチラだ


 基本的にその手の表現は、表現時間が長くなれば長くなるほど
 影響面積比が大になればなるほどに‥ビットレートを持って行かれる

 ビットレートが不十分で、ブロッキング現象に見舞われようと
 大概は、再生支援処理の際に補正されるのでなんでもないように思うわけだが
 その再生支援の補正能力にだって限度があるのだから、それの最低限のビットレートは求められる

 そう、大抵はビットレートを追加してやると何とかなるのだが

 何とかならないのが、1秒を超えんとばかりのキラキラやチラチラ表現になる
 この時に邪魔になるのが、先の参照フレームMix(mixed_ref)だ


 ‥参照フレームMixには、ビットレート不足の際に
 どこかに手頃な明度品質のブロックを造りあげ、それの色が不適切にあるにも拘わらず
 想定内とした箇所にことごとく、その手のブロックをやっつけで放り込む
 静止画でみると明らかに駄目駄目だけど、再生時に補正処理範囲ならOKとした癖がある

 そういうのが諸々そのキラキラ、チラチラに宛がわれて放り込まれると
 ビットレートを上げても、同じ事の繰り返しで
 ものの見事にチグハグしたものにしか仕上がらない

 (とくに再生支援無し再生時)

 (理由は、その周辺の色差まで事細かいからだ‥)
 (補正処理が補正する際には、一つ一つのマクロブロックの中身だけであって)
 (周囲のグラデーションまで意識して、補正するわけでは無い)

 なので、ビットレートを上げても納得できないなら
 サクッと(mixed_ref=0)にせざるを得ない(実に悩ましい)
 (その場合、ソースの都合によっては、rc_lookahead=23のままの方が良いこともあるかも‥)


> まぁ基本は、先読みの量をその手の対象シーンより多めに取るのを忘れていてはあかんのや
> (さらに区切れ無き複雑なパン連続地帯ともなれば、もう先の先まで先読みしないとwwww)


 ‥120フレームレートをエンコードしたいなんて言いだしてる時代なのだから
 秒間コマ数×0.999×16.666666666…に設定するぐらいでないと
 但し、GOPの最大幅を2秒にする際には、合わせて2倍にしましょう(どんだけ〜)



posted by 木田舎滝ゆる里 at 12:13 | Comment(0) | AVC-優恋里小扉 | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。