4 ms·
The author is pretty confused. x264’s slower presets enable searching more points in ME and a more accurate RDO (among other things), just like x265’s. But in a
by brigade 5y ago
The author is pretty confused. x264’s slower presets enable searching more points in ME and a more accurate RDO (among other things), just like x265’s. But in all cases for any modern encoder, all mode decisions are done baed on the estimated bitcost relative to distortion, so the slower presets are just evaluating more options. (kinda)
That said, it is the case across all codecs that more accurate motion vector fields (e.g. using optical flow) are not generally optimal. A simple way of reasoning about that is that one block reusing the same motion vector as a neighboring block is much cheaper than encoding a marginal difference, which often more expensive than the bits saved in the residual.
Anyway, CRF was never designed to map to the same quality across different encoder settings, which having actually read the article, is what I think they’re actually complaining about.
- lmm 5y agoSo what is designed for that? Generally as an encoder you want to target a certain (perceptual) quality level and when testing different settings you're aiming to hold that constant and see whether you achieve a lower bitrate. There should be a way to do that.
- brigade 5y agoYou plot two RD curves with whatever quality metric you care about, then calculate the distance between them. Also known as the Bjontegaard metric.
- slhck 5y agoAnd the issue with that is that they're using PSNR and SSIM as quality metrics, which are useful for images, but haven't been designed for video, so they cannot take into account temporal factors and how motion masks distortion, etc. I think for AV1 they're using VMAF too, which is an actual video quality metric (https://github.com/Netflix/vmaf https://github.com/Netflix/vmaf).
- brigade 5y agoSure you can use VMAF as the quality metric for BD-rate, that’s what BD-VMAF is
- lmm 5y agoBut even after choosing a method, I want to be able to set target quality in a meaningful way. Having a parameter that I can set to specify quality on a method-agnostic scale seems like a basic usability feature.