The quality of encoded video is based on a function of the target-bitrate and type of video content. Several encoder parameters can be used to adjust the encoder quality, such as:
- The number of B-frames (Gop.NumB) that can be adjusted according to the amount of motion, for example, increase to two for static scenes or video conferencing or reduce to zero for sequences with a lot of motion or high frame rates.
- The VBR rate control mode can improve the average quality when some parts of the sequence have lower complexity or motion.
- For video conference or when random access is not needed, you can replace the IPP... GOP by the LOW_DELAY_P GOP and optionally enable the GDR intra refresh.
- If there are frequent scene changes, the ScnChgResilience setting can be enabled to reduce artifacts following scene change transitions.
- If scene changes can be detected by the system, the encoder's scene change signaling API should be called instead (with ScnChgResilience disabled, for example) for the encoder to dynamically adapt the encoding parameters and GOP pattern. The scene change information can be provided in a separate input file (CmdFile) when using the control software test application.
- If the highest PSNR figures are targeted instead of subjective quality, it is recommended to set QPCtrlMode = UNIFORM_QP and ScalingList = FLAT.
- If target bitrate is too low for complex video scenes, I frame beating or a sweeping low quality line (if in GDR mode) is noticeable. Target bitrate needs to be increased to avoid such visual artifacts.