15.01.2022, 12:52
Hello,
you can find a short description of frames: I, B, P at the following link:
https://en.wikipedia.org/wiki/Video_comp...ture_types
as you can guess, most of encoding standards try to improve the compression and quality of these frames to improve the overall compression of the video. Since Rigaya is using the NVDIA video engine, you can find the features available in the NVIDIA video encoder at the following link:
https://docs.nvidia.com/video-technologi...tion-note/
as you can see the "HEVC B frame" is supported only by Ampere and Turing GPUs.
The rate controls provided by NVIDIA video engine are described at the following link:
https://docs.nvidia.com/video-technologi...te-control
The Rigaya's NVenc define as "Constant Quality" the rate control called by NVDIA as "Target Quality" it is a rate control similar to CRF (constant rate factor) available in x265. The NVEnc "Constant Quantizer" is the rate control called by NVIDIA "Constant QP". In this case all the frames are encoded using the same "quantization", you can find a description of this video quality parameter at the following link: https://en.wikipedia.org/wiki/Quantizati...rocessing)
In NVEnc you can define a quantization value for each of the frames: I, B, P. Unfortunately it is missing a simply rule that allows to map the Target Quality with the Quantization.
As explained at the following link: https://slhck.info/video/2017/02/24/crf-guide.html
CQP is a “constant quality” encoding mode, as opposed to constant bitrate (CBR). Typically you would achieve constant quality by compressing every frame of the same type the same amount, that is, throwing away the same (relative) amount of information. In tech terminology, you maintain a constant QP (quantization parameter). The quantization parameter defines how much information to discard from a given block of pixels (a Macroblock). This typically leads to a hugely varying bitrate over the entire sequence. The Constant Rate Factor (CRF) is a little more sophisticated than that. It will compress different frames by different amounts, thus varying the QP as necessary to maintain a certain level of perceived quality. It does this by taking motion into account. A constant QP encode at QP=18 will stay at QP=18 regardless of the frame (there is some small offset for different frame types, but it is negligible here). Constant Rate Factor at CRF=18 will increase the QP to, say, 20, for high motion frames (compressing them more) and lower it down to 16 for low motion parts of the sequence. This will essentially change the bitrate allocation over time.
Constant QP is very good to evaluate new tools, and that’s how MPEG evaluate coding tools for new standards - they don’t want to take into account your rate control allocation algorithm. CRF maintains quality by varying bit rate as needed.
you can find a short description of frames: I, B, P at the following link:
https://en.wikipedia.org/wiki/Video_comp...ture_types
as you can guess, most of encoding standards try to improve the compression and quality of these frames to improve the overall compression of the video. Since Rigaya is using the NVDIA video engine, you can find the features available in the NVIDIA video encoder at the following link:
https://docs.nvidia.com/video-technologi...tion-note/
as you can see the "HEVC B frame" is supported only by Ampere and Turing GPUs.
The rate controls provided by NVIDIA video engine are described at the following link:
https://docs.nvidia.com/video-technologi...te-control
The Rigaya's NVenc define as "Constant Quality" the rate control called by NVDIA as "Target Quality" it is a rate control similar to CRF (constant rate factor) available in x265. The NVEnc "Constant Quantizer" is the rate control called by NVIDIA "Constant QP". In this case all the frames are encoded using the same "quantization", you can find a description of this video quality parameter at the following link: https://en.wikipedia.org/wiki/Quantizati...rocessing)
In NVEnc you can define a quantization value for each of the frames: I, B, P. Unfortunately it is missing a simply rule that allows to map the Target Quality with the Quantization.
As explained at the following link: https://slhck.info/video/2017/02/24/crf-guide.html
CQP is a “constant quality” encoding mode, as opposed to constant bitrate (CBR). Typically you would achieve constant quality by compressing every frame of the same type the same amount, that is, throwing away the same (relative) amount of information. In tech terminology, you maintain a constant QP (quantization parameter). The quantization parameter defines how much information to discard from a given block of pixels (a Macroblock). This typically leads to a hugely varying bitrate over the entire sequence. The Constant Rate Factor (CRF) is a little more sophisticated than that. It will compress different frames by different amounts, thus varying the QP as necessary to maintain a certain level of perceived quality. It does this by taking motion into account. A constant QP encode at QP=18 will stay at QP=18 regardless of the frame (there is some small offset for different frame types, but it is negligible here). Constant Rate Factor at CRF=18 will increase the QP to, say, 20, for high motion frames (compressing them more) and lower it down to 16 for low motion parts of the sequence. This will essentially change the bitrate allocation over time.
Constant QP is very good to evaluate new tools, and that’s how MPEG evaluate coding tools for new standards - they don’t want to take into account your rate control allocation algorithm. CRF maintains quality by varying bit rate as needed.