I am doing some experiments with HEVC encoding. I'd like to confirm some things about HEVC encoding with driver version 18.104.22.16874 on a Core-i7 6700K (Skylake) CPU with hardware 1.19 API. I am doing sweeps of various settings and looking at PSNR vs actual (as opposed to requested) bitrate. I am charting the results and calling them "PSNR curves". The sample video I am using is "Samsung Earth From Above" 1080p/29.97. Right now I am just trying to determine if I have bugs in my code that are affecting the results.
Here are my questions about HEVC:
1) Are the speed-quality settings grouped like (1,2), (3,4,5), (6,7) such that the values in each group are identical to each other?
2) Are AVBR, VBR, ICQ, and CQP all the supported rate control methods?
3) In my results AVBR and VBR give relatively close PSNR curves, and likewise with ICQ and CQP. Is it reasonable that AVBR/VBR have significantly higher (better) PSNR curves than ICQ/CQP?
Thanks for your insightful questions.
1) Yes, while some codecs have all 7 targetusage settings implemented others do not. When fewer are implemented the gaps are aliased. For example, here TU2=TU1, TU3=TU4, TU5=TU4, etc. H264 now has all 7, but a few hardware generations ago there were only 3.
2) You're right. HEVC only has a limited subset of automatic BRC modes. No lookahead, QBVR, VCM, etc.
3) Yes, your results are reasonable. Of course CQP mode where QPI, QPP, and QBP are constant through the entire encode (that is, no bitrate control) are expected to have lower quality at a given bitrate than when BRC is used. You can still do a lot with CQP to build your own BRC if you like though if your application manages the feedback between QP and visual quality or frame size. ICQ was intended to be similar to CRF BRC in x264/x265.
Documentation for HEVC is still developing. Please watch for more on this topic.