mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-08-29 02:03:03 +08:00
obs-nvenc: Only update Target Quality in CQVBR mode
Previously it was setting the `averageBitRate` value to what is being set in Variable Bitrate rate control mode. However, CQVBR is initialized with a value of `0` and instead Target Quality is being used. This adds a check for the CQVBR mode and if it's set will update the `targetQuality` value, otherwise it will update `averageBitRate`. Additionally reset `averageBitRate` to 0 if CQVBR is active, and reset `targetQuality` to 0 if it's not in any VBR mode
This commit is contained in:
@@ -98,8 +98,17 @@ static bool nvenc_update(void *data, obs_data_t *settings)
|
||||
enc->props.bitrate = obs_data_get_int(settings, "bitrate");
|
||||
enc->props.max_bitrate = obs_data_get_int(settings, "max_bitrate");
|
||||
|
||||
bool cqvbr = astrcmpi(enc->props.rate_control, "CQVBR") == 0;
|
||||
bool vbr = (enc->config.rcParams.rateControlMode == NV_ENC_PARAMS_RC_VBR);
|
||||
enc->config.rcParams.averageBitRate = (uint32_t)enc->props.bitrate * 1000;
|
||||
|
||||
if (cqvbr) {
|
||||
enc->config.rcParams.targetQuality = (uint8_t)obs_data_get_int(settings, "target_quality");
|
||||
enc->config.rcParams.averageBitRate = 0;
|
||||
} else {
|
||||
enc->config.rcParams.targetQuality = 0;
|
||||
enc->config.rcParams.averageBitRate = (uint32_t)enc->props.bitrate * 1000;
|
||||
}
|
||||
|
||||
enc->config.rcParams.maxBitRate = vbr ? (uint32_t)enc->props.max_bitrate * 1000
|
||||
: (uint32_t)enc->props.bitrate * 1000;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user