From 17e358096ef31c75bb6bc6586a9b5946e2f52aee Mon Sep 17 00:00:00 2001 From: Johannes Kron Date: Thu, 7 Mar 2024 15:41:34 +0000 Subject: [PATCH] Add AV1 encoder speed setting for screen share MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There's an AV1 encoder speed setting 11 that is supposed to be used for screen sharing content. Bug: chromium:328598314 Change-Id: Id97898554a740eb1684d03c782c718c19f4c95e2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/342201 Commit-Queue: Johannes Kron Reviewed-by: Erik Språng Cr-Commit-Position: refs/heads/main@{#41874} --- modules/video_coding/codecs/av1/libaom_av1_encoder.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc index 03bb367fe0..745471e321 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc @@ -374,7 +374,8 @@ bool LibaomAv1Encoder::SetEncoderControlParameters(int param_id, return error_code == AOM_CODEC_OK; } -// Only positive speeds, range for real-time coding currently is: 6 - 8. +// Only positive speeds, range for real-time coding currently is: 6 - 10. +// Speed 11 is used for screen sharing. // Lower means slower/better quality, higher means fastest/lower quality. int LibaomAv1Encoder::GetCpuSpeed(int width, int height) { if (aux_config_) { @@ -386,6 +387,9 @@ int LibaomAv1Encoder::GetCpuSpeed(int width, int height) { return 10; } else { + if (encoder_settings_.mode == VideoCodecMode::kScreensharing) { + return 11; + } // For smaller resolutions, use lower speed setting (get some coding gain at // the cost of increased encoding complexity). switch (encoder_settings_.GetVideoEncoderComplexity()) {