0

media: Set up extra rate control settings in VpxVideoEncoder

This should improve rate control quality.

Bug: 376707227
Change-Id: I6ad90b40752643e9c1e88aec40bff630b20a5c4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6092084
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1395705}
This commit is contained in:
Eugene Zemtsov
2024-12-12 17:19:56 -08:00
committed by Chromium LUCI CQ
parent 64a3e25e79
commit 2bf8dfdc35

@ -94,6 +94,12 @@ EncoderStatus SetUpVpxConfig(const VideoEncoder::Options& opts,
config->rc_min_quantizer = 12;
}
config->rc_resize_allowed = 0;
config->rc_undershoot_pct = 50;
config->rc_overshoot_pct = 50;
config->rc_buf_initial_sz = 600;
config->rc_buf_optimal_sz = 600;
config->rc_buf_sz = 1000;
// Only if latency_mode is real time, a frame might be dropped.
config->rc_dropframe_thresh =
opts.latency_mode == VideoEncoder::LatencyMode::Realtime
@ -536,6 +542,7 @@ void VpxVideoEncoder::Initialize(VideoCodecProfile profile,
}
}
vpx_codec_control(codec.get(), VP8E_SET_STATIC_THRESHOLD, static_thresh);
vpx_codec_control(codec.get(), VP8E_SET_MAX_INTRA_BITRATE_PCT, 600);
options_ = options;
originally_configured_size_ = options.frame_size;