Add support for single-frame VBV, improve compliance
This allows both constant-framesize and capped-framesize encoding. Literal constant framesize isn't actually supported yet due to the lack of filler support. Example with 30fps video: --vbv-bufsize 200 --vbv-maxrate 6000 will ensure that no frame is ever larger than 200 kilobits. One example use-case of this is for zero-delay streaming where bandwidth costs need to be minimized. If every frame is smaller than 200 kilobits and the client has a 6 megabit connection, every single frame can be instantly sent to the client and handled without any decoder-side buffer. Fix a mistake in VBV calculation--this may have caused the VBV to be slightly non-compliant in some situations without x264 realizing it. Add primitive prediction handling for rows with quantizers lower than their reference. This slightly improves VBV in CBR mode. Various other minor improvements to VBV, mostly to make single-frame VBV work. Commit sponsored by a media streaming company that wishes to remain anonymous.
Showing with 96 additions and 55 deletions