Bフレームに適応重み補完予測方式を使う。
このオプション抜きの場合、双方向予測されたマクロブロックは前後の参照フレームを等価に扱う。
このオプション有りの場合、参照フレームに対するBフレームの時間軸上の位置に応じて、前後の参照フレームのどっちかを重要視する。
bframes > 1よりも大きな値でないと効かない。
*b_adaptの方が強力で、一緒に使うとweight_bの効果はあまり出ない?
B スライスの双方向予測時に、重み付き予測 (weighted prediction)
を行う。--bframes 2 以上の場合に意味を持つ。
通常、Bは前後のPから予測生成されるが、--weightb抜きでは前後のPを単純平均するのに対し、--weightbでは前後のPに相対距離に応じ
た重みをつける。近いヤツは重視して遠いのはそれなりに。
以上、まるも製作所さんの日記(2007/07/04(木)x264 [11] --weightb)およびZero 1氏の説明を合体。
http://aflux.deltaanime.net/Zero1/MP4/x264.html#analysis
Bフレームの重み付け予測は、Bフレームと前方および後続Pフレームの相対距離を勘定に入れる特殊なモード。通常は単純平均を使う。
これは通常はBフレームが入ると見た目が悪い場所にBフレームが入らない事を意味する(例えば動き予測の精度がうまく出ないとか)。このモードが効果を発
揮するには1枚以上のBフレームが必要。
--weightb
Usage: --weightb (default=off)
Weighted B Frame prediciton is a special mode that takes into account the distance of a B-frame, relative to the previous and next P-frames when making decisions, as opposed to simply averaging like it normally would. This means that the use of B-frames is restricted in places where they would normally look bad (ie, if it's too hard to predict the motion accurately). This mode requires more than 1 B-frame to become effective.
http://www.geocities.jp/encmemo5whf6jvag8/index2.html#06-02
・-w 圧縮時間が、モリモリ増える素敵なオプション。Bフレームの出来が上がる。まるも製作所さんでは「B=2以上の場合に意味を持つ」としているが、 Zero1さん、Man-MEncoder共に条件はB=1以上としている。また覚書・なるPさんの「Bフレームの出来が上がる」はB=1時の感想の公算 が高い。これは複数参照が2以上であればB=1でも有効な事を示唆していると思われる。
一般的なケースではこのオプションのメリットは大きくありません。しかしクロスフェードや黒フェードアウトの場面では、適応重み付け予測はビットレートを非常に節約してくれます。MPEG-4 ASPで黒フェードアウトの場面をキレイに符号化するにはコストの高いIフレームを連続させる必要がありましたが、Bフレームの適応重み付け予測は、少なくともその内のいくつかをずっとコストの低いBフレームにする事ができます。特に特別な判断をするわけではないので、エンコードにかかる時間は最小限です。また、デコード負荷も変わりません。
残念な事に、現在の適応的B挿入が使うアルゴリズムはフェード場面でのB使用を控える傾向がとても強いです。これが変わるまではフェードの影響が大きそうなクリップでは -x264encoptsに nob_adapt を入れておく方が良い事もあるでしょう。
In typical cases, there is not much gain with this option. However, in crossfades or fade-to-black scenes, weighted prediction gives rather large bitrate savings. In MPEG-4 ASP, a fade-to-black is usually best coded as a series of expensive I-frames; using weighted prediction in B-frames makes it possible to turn at least some of these into much smaller B-frames. Encoding time cost is minimal, as no extra decisions need to be made. Also, contrary to what some people seem to guess, the decoder CPU requirements are not much affected by weighted prediction, all else being equal.
Unfortunately, the current adaptive B-frame decision algorithm has a strong tendency to avoid B-frames during fades. Until this changes, it may be a good idea to add nob_adapt to your x264encopts, if you expect fades to have a large effect in your particular video clip.
H.264/AVCで定義された符号化ツールの一つ。
参照フレームに重みを付けて、直前の映像を(ブライトネス方向に)スケーリングする。といった事が可能になる。画面の輝度変化に関わる圧縮方式。特にフェード、後続の映像が直前の映像によく似ている場合に効果があるとされる。従来は動きしか符号化しないので暗転や明転に弱かった。
例えば「暗転」=画面の全ドットの輝度を0(黒)に持って行くわけだから、マクロブロック単位で、輝度を0までもってく速度、を計算式でやっちゃおうぜ。という事らしい。理屈の上ではディゾルブ(フェードによる場面転換)にも効きそうだが、そういうものでもないらしい。
実装する場合には、白フェードインと黒フェードイン、白フェードアウト、黒フェードアウトで同じ計算式を使うと効果がばらつくので、ソレゾレ別の計算式が必要とする説もあった。ソースが読めれば式が解るかも知れない。