The VCU supports the following rate control modes.
- Variable Bit Rate (VBR)
- Constant Bit Rate (CBR)
The MCU firmware handles the rate control process. No signals (either in Software API or FPGA signals) are triggered during the rate control process.
When using VBR, the encoder buffer is allowed to underflow (be empty), and the maximum bitrate, which is the transmission bitrate used for the buffering model, can be higher than the target bitrate. So VBR relaxes the buffering constraints and allows to decrease the bitrate for simple content and can improve quality by allowing more bits on complex frames. VBR mode constrains the bitrate with a specified maximum while keeping it on the target bit rate where possible. Similar to CBR, it avoids buffer underflow by increasing the QP. However, the target bit rate can exceed up to the maximum bit rate. Therefore, the QP has to be increased by a smaller factor. A buffer overflow results in an unchanged QP and a lower bit rate.
The goal of CBR is to reach the target bitrate on average (at the level of one or a few GOPs) and to comply with the Hypothetical Reference Decoder (HRD) model, - avoiding decoder buffer overflows and underflows. In CBR mode, a single bitrate value defines both the target stream bitrate and the output/transmission (leaky bucket) bitrate. The reference decoder buffer parameters are Coded Picture Buffer (CPBSize) and Initial Delay. The CBR rate control mode tries to keep the bit rate constant whilst avoiding buffer overflows and underflows. If a buffer underflow happens, the QP is increased (up to MaxQP) to lower the size in bits of the next frames. If a buffer overflow occurs, the QP is decreased (down to MinQP) to increase the size in bits.
The frame is divided into multiple slices; the VCU encoder output, and decoder input are processed in slice mode. The VCU Encoder input, and Decoder output still work in frame mode.