Macroblock-tree ratecontrol
authorJason Garrett-Glaser <darkshikari@gmail.com>
Wed, 5 Aug 2009 00:46:33 +0000 (17:46 -0700)
committerJason Garrett-Glaser <darkshikari@gmail.com>
Fri, 7 Aug 2009 05:57:40 +0000 (22:57 -0700)
commitbb66c482242a0747823661b212114c1a2f015fe3
treef1b4b3ca50ed01925182bb9c284d8b547998cf00
parentf21e71a04ba65aff9b5a4bfa8a73fd86c463f4ee
Macroblock-tree ratecontrol
On by default; can be turned off with --no-mbtree.
Uses a large lookahead to track temporal propagation of data and weight quality accordingly.
Requires a very large separate statsfile (2 bytes per macroblock) in multi-pass mode.
Doesn't work with b-pyramid yet.
Note that MB-tree inherently measures quality different from the standard qcomp method, so bitrates produced by CRF may change somewhat.
This makes the "medium" preset a bit slower.  Accordingly, make "fast" slower as well, and introduce a new preset "faster" between "fast" and "veryfast".
All presets "fast" and above will have MB-tree on.
Add a new option, --rc-lookahead, to control the distance MB tree looks ahead to perform propagation analysis.
Default is 40; larger values will be slower and require more memory but give more accurate results.
This value will be used in the future to control ratecontrol lookahead (VBV).
Add a new option, --no-psy, to disable all psy optimizations that don't improve PSNR or SSIM.
This disables psy-RD/trellis, but also other more subtle internal psy optimizations that can't be controlled directly via external parameters.
Quality improvement from MB-tree is about 2-70% depending on content.
Strength of MB-tree adjustments can be tweaked using qcompress; higher values mean lower MB-tree strength.
Note that MB-tree may perform slightly suboptimally on fades; this will be fixed by weighted prediction, which is coming soon.
12 files changed:
common/common.c
common/common.h
common/frame.c
common/frame.h
common/osdep.h
encoder/analyse.c
encoder/encoder.c
encoder/ratecontrol.c
encoder/ratecontrol.h
encoder/slicetype.c
x264.c
x264.h