This is an incremental update with several important rate control improvements and a few new features.
= New Features =
1. Psycho-visual rate distortion optimizations. These RD optimizations are only effective on presets which use RDO (rd levels 5 and 6).
Psy-rd is still considered experimental in this release and is not enabled by default. We recommend evaluating with a low psy weight factor, for instance: —rd 5 —psy-rd 0.4
2. Lossless coding. This release of x265 can create a bit-accurate output bitstream by using —lossless. This feature disables rate control and distortion metrics, and instead just reports the compression ratio at the end of the encode. Lossless coding is considered experimental in this release, we believe there is room for improvement in both compression efficiency and performance.
3. Support for Y4M streams with more than 8 bit depth (for example, ffmpeg -i vid.avi -pix_fmt yuv420p10le -strict -1 -f yuv4mpegpipe — | ./x265 — —y4m o.hevc)
= API Changes =
* new x265_picture.forceQp for qpfile functionality
* new param.levelIdc to force a decoder requirement level
* new param.psyRd for (experimental) psycho-visual rate distortion optimizations
* new param.bIntraInBFrames to disable intra predictions in B slices regardless of preset
* new param.noiseReduction, very similar to x264 noise reduction
* new param.bLossless to enable lossless coding (experimental)
* new param.bCULossless to include trans-quant bypass modes in CU RD analysis
* new param.rc.rfConstantMin to limit rate factors in rate control
* param.rc.aqMode now defaults to 2 (to match CLI behavior)
new x265_encoder_parameters() function which retrieves a copy of the active parameters from the encoder. x265_encoder_open() was modified to ensure it never modified the param structure passed to the function; it makes a private copy of the param prior to making any modifications to it.
The default setting (the medium preset) was be adjusted to include the —no-rect and —no-amp options, becoming faster (on average, about 70%, but as much as 90%), with a very slight (~ 1 — 4%) impact on encoding efficiency.
We have sped up the ultrafast preset by about 10 to 30% (bigger benefit at higher bit rates). There is a very small impact on encoding efficiency, but you can always increase efficiency by using a slower (higher quality) preset. We’ve also sped up the superfast, veryfast and faster presets in a similar way.
= CLI Changes =
—repeat-headers (older feature, newly exposed to CLI) —nr —lossless —psy-rd —crf-min —no-b-intra —cu-lossless —qpfile
—tune fast-decode now also disabled intra in B frames
As always, the most detailed documentation for the command line arguments can be found in our online documentation:
= Rate Control =
Single pass ABR received a lot of attention in this release, in particular the tendency for ABR to undershoot and overshoot wildly in the first two seconds of the video. We added two new features to ABR to limit this tendency. First, we now amortize a portion of the cost of I frames across many frames. Second, we limit frame parallelism until we have about a half-second of P frames encoded. Together these two changes have greatly improved the ability of single pass ABR to arrive at the good QP for the first GOP without any large swings.
Further improvements were made to ABR to allow it to reach very high bit rates.
We also did some re-balancing of CRF between Main and Main10 so they achieve closer quality, and several fixes were made to VBV.
Recovery Point SEI are now generated at each keyframe
In the near future we will be focusing on two-pass encoding and making mode decision more efficient.